python - 如何为使用 gmail 发送的电子邮件添加主题?

标签 python python-2.7 email gmail subject

我正在尝试使用 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()

错误行:

server.sendmail(fromx, to, subject , msg) #'subject'Causes trouble

最佳答案

smtplib.SMTP.sendmail() 的调用不带 subject 参数。参见 the doc有关如何调用它的说明。

主题行以及所有其他 header 都作为消息的一部分包含在称为 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()

当然,使您的消息符合所有适当标准的更简单方法是使用 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()

Other examples也可用。

关于python - 如何为使用 gmail 发送的电子邮件添加主题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39540043/

相关文章:

python - 如何重新排列 pandas 数据框的每一行

python - sqlalchemy 有像 django 中的 Q 一样的过滤器对象吗?

python - 使用 Python C API 命名参数?

python - 单个django查询集获取n个相邻项目

python-2.7 - 使用 boto3 将文件上传到 S3 中的特定文件夹

python - ttk.Treeview - 无法更改行高

django - 标准化电子邮件地址意味着什么?

python - metadataHeaders 选项因多个 header 而失败

php - 在 php 中使用发送确认电子邮件

java - 从 Java 邮寄时出错(SSLHandShake 异常)