擅长:python、mysql、java
<p>您可能不希望BCC成为消息本身的一部分(因为根据定义,它并不意味着收件人可以看到),因此最好将其存储在单独的变量中,而不是作为<code>MIMEMultipart</code>实例的元素</p>
<p>您也不希望将前导逗号etc(您添加它只是为了帮助连接字符串)放入<code>msg</code>的元素中,因为它们将构成消息的一部分</p>
<p>如果您这样做:</p>
<pre><code>msg['To'] = input("Receiver(s): ")
msg['CC'] = input("CC(s): ")
bcc = input("BCC(s): ")
</code></pre>
<p>然后,您可以使用以下内容构建所有收件人的列表:</p>
<pre><code>all_recipients = sum([s.split(",") for s in (msg['To'], msg['CC'], bcc) if s],
[])
</code></pre>
<p>然后,您可以使用以下方式发送消息:</p>
<pre><code>mail.sendmail(msg['From'], ",".join(all_recipients), msg.as_string())
</code></pre>
<hr/>
<p>上面的代码假定输入字符串不包含逗号,除非作为分隔符。原则上,“To:”等标题可以包含实名部分,这些部分可以包含逗号,例如:</p>
<pre><code>"John Doe, Yoyodyne, Inc." <john.doe@yoyodyne.example.com>
</code></pre>
<p>如果可以使用此方法,则另一种方法是列出/CC/BCC头中不为空的,并将它们连接到<code>","</code>上,这样就不必拆分任何字符串:</p>
<pre><code>non_empty_recipient_headers = [h for h in (msg['To'], msg['CC'], bcc) if h]
mail.sendmail(msg['From'], ",".join(non_empty_recipient_headers), msg.as_string())
</code></pre>