我搜索了很多这个,但无法解决我的脚本中的问题。最后,我决定将它发布在这里。
以下是代码段:
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应该是一个列表。
Catch:如果我删除了行toaddrlist += (cc,)
,则邮件不会在“收件人”字段中两次发送给收件人,但邮件不会传递到抄送别名。
请帮忙。
答案 0 :(得分:0)
评估一行toaddrlist += (cc,)
时,您案例中toaddrlist
的值为:
["", ["SomeEmailAlias@xyz.com"]]
这是错误的,因为toaddrlist
必须是字符串列表,而不是包含某些列表的列表。
所以解决方案是改变:
toaddrlist += (cc,)
到
toaddrlist += cc
或推荐形式(pythonic方式):
toaddrlist.extend(cc)