2016-08-04 129 views
0

我搜索了很多,但无法解决我的脚本中的问题。最后,我决定在这里发布它。smtplib:为什么“收件人”字段中的收件人收到邮件两次?

下面的代码片段:

fromaddr = "[email protected]" 
cc = ['[email protected]'] 
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. 

我知道,我已经确保了味精[“为” 1]接受字符串值(toaddr),而在sendmail的toaddrlist()应该是一个列表。

捕获:如果我删除行toaddrlist += (cc,),则邮件不会传递给“收件人”字段中的收件人两次,但邮件不会传递给抄送别名。

请帮忙。

回答

0

当行toaddrlist += (cc,)评估的toaddrlist你的情况的值是:

["", ["[email protected]"]] 

,它是错误的,因为toaddrlist必须是一个字符串列表,不包含某些列表清单。

因此,解决办法是改变:

toaddrlist += (cc,) 

toaddrlist += cc 

或建议书(Python的方式):

toaddrlist.extend(cc) 
+0

感谢艾哈迈德,但没有修复似乎正在解决这个问题。我仍然收到电子邮件两次。为了查看可能出错的地方,我列出了'toaddr'和'toaddrlist'的值,它们是'somemail @ xyz.com'和'[u'[email protected]','[email protected]' ']'分别在这两种情况下。 –

相关问题