如何将主题添加到使用Gmail发送的电子邮件中?

Tha*_*oob 0 python email gmail subject python-2.7

我正在尝试使用带有主题和消息的GMAIL发送电子邮件.我已成功使用GMAIL发送电子邮件而未执行,subject也已收到电子邮件.但是,每当我尝试添加主题时,该程序根本不起作用.

import smtplib
fromx = 'email@gmail.com'
to  = 'email1@gmail.com'
subject = 'subject' #Line that causes trouble
msg = 'example'
server = smtplib.SMTP('smtp.gmail.com:587')
server.starttls()
server.ehlo()
server.login('email@gmail.com', 'password')
server.sendmail(fromx, to, subject , msg) #'subject'Causes trouble
server.quit()
Run Code Online (Sandbox Code Playgroud)

错误行:

server.sendmail(fromx, to, subject , msg) #'subject'Causes trouble
Run Code Online (Sandbox Code Playgroud)

Rob*_*obᵩ 5

调用smtplib.SMTP.sendmail()不带subject参数.有关如何调用它的说明,请参阅doc.

在最初定义格式的现在过时的文档之后,主题行以及所有其他标题以RFC822格式的格式包含在消息中.使您的消息符合该格式,如下所示:

import smtplib
fromx = 'xxx@gmail.com'
to  = 'xxx@gmail.com'
subject = 'subject' #Line that causes trouble
msg = 'Subject:{}\n\nexample'.format(subject)
server = smtplib.SMTP('smtp.gmail.com:587')
server.starttls()
server.ehlo()
server.login('xxx@gmail.com', 'xxx')
server.sendmail(fromx, to, msg)
server.quit()
Run Code Online (Sandbox Code Playgroud)

当然,使消息符合所有适当标准的更简单方法是使用Python email.message标准库,如下所示:

import smtplib
from email.mime.text import MIMEText

fromx = 'xxx@gmail.com'
to  = 'xxx@gmail.com'
msg = MIMEText('example')
msg['Subject'] = 'subject'
msg['From'] = fromx
msg['To'] = to

server = smtplib.SMTP('smtp.gmail.com:587')
server.starttls()
server.ehlo()
server.login('xxx@gmail.com', 'xxx')
server.sendmail(fromx, to, msg.as_string())
server.quit()
Run Code Online (Sandbox Code Playgroud)

其他例子也是可用的.

  • 谢谢罗布!很好的解释!感激不尽! (2认同)