smtplib: 为什么 "To" 字段中的收件人会收到两次邮件?
smtplib: Why do the recipients in "To" field receive the mail twice?
我对此进行了很多搜索,但无法解决我的脚本中的问题。所以最后,我决定 post 在这里。
这是代码片段:
fromaddr = "someValidAddress@xyz.com"
cc = ['SomeEmailAlias@xyz.com']
toaddr = ""
msg = MIMEMultipart()
toaddrlist = list(toaddr.split(',')) #As sendmail() accepts the list of recipients only in list form.
toaddrlist += (cc,)
msg['From'] = fromaddr
msg['To'] = toaddr
msg['Cc'] = ', '.join(cc)
msg['Date'] = formatdate(localtime=True)
msgHtml = MIMEText(html, 'html')
msg.attach(msgHtml)
msg['Subject'] = "Test mail"
server = "someMailServer.xyz.com"
smtp = smtplib.SMTP(server, 25)
smtp.sendmail(fromaddr, toaddrlist, msg.as_string())
smtp.close() #Close the SMTP server connection.
我知道并确保 msg['To'] 接受字符串值 (toaddr),而 sendmail() 中的 toaddrlist 应该是一个列表。
注意:如果我删除 toaddrlist += (cc,)
行,则邮件不会两次发送到 "To" 字段中的收件人,但邮件不会发送到 Cc 别名。
请帮忙。
当评估行 toaddrlist += (cc,)
时,toaddrlist
在您的情况下的值为:
["", ["SomeEmailAlias@xyz.com"]]
这是错误的,因为 toaddrlist
必须是字符串列表而不是包含某些列表的列表。
所以解决办法就是改:
toaddrlist += (cc,)
到
toaddrlist += cc
或推荐的形式(pythonic 方式):
toaddrlist.extend(cc)
我对此进行了很多搜索,但无法解决我的脚本中的问题。所以最后,我决定 post 在这里。
这是代码片段:
fromaddr = "someValidAddress@xyz.com"
cc = ['SomeEmailAlias@xyz.com']
toaddr = ""
msg = MIMEMultipart()
toaddrlist = list(toaddr.split(',')) #As sendmail() accepts the list of recipients only in list form.
toaddrlist += (cc,)
msg['From'] = fromaddr
msg['To'] = toaddr
msg['Cc'] = ', '.join(cc)
msg['Date'] = formatdate(localtime=True)
msgHtml = MIMEText(html, 'html')
msg.attach(msgHtml)
msg['Subject'] = "Test mail"
server = "someMailServer.xyz.com"
smtp = smtplib.SMTP(server, 25)
smtp.sendmail(fromaddr, toaddrlist, msg.as_string())
smtp.close() #Close the SMTP server connection.
我知道并确保 msg['To'] 接受字符串值 (toaddr),而 sendmail() 中的 toaddrlist 应该是一个列表。
注意:如果我删除 toaddrlist += (cc,)
行,则邮件不会两次发送到 "To" 字段中的收件人,但邮件不会发送到 Cc 别名。
请帮忙。
当评估行 toaddrlist += (cc,)
时,toaddrlist
在您的情况下的值为:
["", ["SomeEmailAlias@xyz.com"]]
这是错误的,因为 toaddrlist
必须是字符串列表而不是包含某些列表的列表。
所以解决办法就是改:
toaddrlist += (cc,)
到
toaddrlist += cc
或推荐的形式(pythonic 方式):
toaddrlist.extend(cc)