如何为使用 gmail 发送的电子邮件添加主题?
How to add a subject to an email being sent with gmail?
我正在尝试使用 GMAIL 发送带有主题和消息的电子邮件。我在没有执行 subject
的情况下使用 GMAIL 成功发送了一封电子邮件,并且还能够收到该电子邮件。但是,每当我尝试添加主题时,程序根本无法运行。
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。
主题行连同所有其他 headers 都包含在称为 RFC822 格式的邮件中,位于最初定义该格式的 now-obsolete 文档之后。使您的消息符合该格式,如下所示:
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 也可用。
或者只使用像 yagmail 这样的包。免责声明:我是维护者。
import yagmail
yag = yagmail.SMTP("email.gmail.com", "password")
yag.send("email1.gmail.com", "subject", "contents")
安装 pip install yagmail
我正在尝试使用 GMAIL 发送带有主题和消息的电子邮件。我在没有执行 subject
的情况下使用 GMAIL 成功发送了一封电子邮件,并且还能够收到该电子邮件。但是,每当我尝试添加主题时,程序根本无法运行。
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。
主题行连同所有其他 headers 都包含在称为 RFC822 格式的邮件中,位于最初定义该格式的 now-obsolete 文档之后。使您的消息符合该格式,如下所示:
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 也可用。
或者只使用像 yagmail 这样的包。免责声明:我是维护者。
import yagmail
yag = yagmail.SMTP("email.gmail.com", "password")
yag.send("email1.gmail.com", "subject", "contents")
安装 pip install yagmail