我使用python smtplib发送电子邮件。他们到达目的地,但是" To"字段丢失。 在Gmail中," To"领域是空的,但雷鸟说"未公开的收件人"。我做了一些谷歌搜索,但我没有找到任何东西。
我没有看到解释这个问题的代码有任何错误,但是我正在关注Stack Overflow的另一个问题的一些代码片段,所以可能是我错过了什么。
这是邮件发件人的代码:
def connect_and_send(send_from, send_to, carbon_copy, msg):
confp = ConfigParser()
confp.read("config/mail.ini")
server = str(confp.get('mail', 'host'))
port = str(confp.get('mail', 'port'))
user = str(confp.get('mail', 'username'))
password= str(confp.get('mail', 'password'))
smtp = smtplib.SMTP_SSL()
smtp.connect(server, port)
smtp.login(
user,
password
)
send_to.append(carbon_copy)
smtp.sendmail(send_from, send_to, msg.as_string())
def send_mail(send_from, send_to, carbon_copy, subject, text, signature, files=None):
assert isinstance(send_to, list)
if ARGS.debug:
print "MAIL to:", send_to
print "MAIL from:", send_from
print "MAIL subject", subject
print "with {0} files attached".format(len(files))
msg = MIMEMultipart('alternative')
msg["Subject"] = subject
msg["From"] = send_from
msg["Date"] = formatdate(localtime=True)
msg["To"] = COMMASPACE.join(send_to)
msg.attach(MIMEText(text+"\n"+signature))
for f in files or []:
part = MIMEBase('image', "png")
part.set_payload(f[1].read())
encoders.encode_base64(part)
part.add_header('Content-Disposition', 'attachment; filename="{0}.png"'.format(f[0]))
msg.attach(part)
if ARGS.debug and not ARGS.force_send:
print msg.as_string()
else:
connect_and_send(send_from, send_to, carbon_copy, msg.as_string())
答案 0 :(得分:0)
您可以尝试yagmail(完全透露:我是开发人员)。
完整的代码是:
import yagmail
yag = yagmail.SMTP(send_from, host = host, port = port)
if files is None:
files = []
yag.send(send_to, subject, contents = [text, signature] + files, bcc = carbon_copy)
请注意,文件已经巧妙地附加了! (鉴于它们是文件名的本地路径)
我还建议使用yagmail的密钥环来防止必须在本地存储密码。
你可以从pip获得yagmail:
pip install yagmail # python 2
pip3 install yagmail # python 3
此外,由于您似乎正在使用某些非常具体的邮件需求,因此我确信您可以从yagmail中受益,并且应该知道阅读github documentation。随意提出问题/请求。