Python 邮件没有主题通过

2 投票
3 回答
3512 浏览
提问于 2025-04-16 15:08

我正在用Python发送Gmail,但我发现邮件没有主题。我意识到我给你看的代码里没有主题,不过我尝试了很多不同的写法也没有成功。有人能告诉我怎么加一个主题吗?这个主题每次都是一样的。

        fromaddr = 'XXXX@gmail.com'
        toaddrs = 'jason@XXX.com'
        msg = 'Portal Test had an error'

        #provide gmail user name and password
        username = 'XXXX'
        password = 'XXXXX'

        # functions to send an email
        server = smtplib.SMTP('smtp.gmail.com:587')
        server.ehlo()
        server.starttls()
        server.ehlo()
        server.login(username,password)
        server.sendmail(fromaddr, toaddrs, msg)
        server.quit()

3 个回答

2

使用Python的邮件模块来生成符合RFC-822标准的邮件格式,包括主题等内容。自己手动写的话容易出错。

http://docs.python.org/library/email

3

你需要填写“主题”这个标题。

可以参考下面这个页面,里面有一些正确做法的例子:18.1.11. email: 示例。第一个例子基本上就是你想要的效果。

4

发送互联网邮件有两个重要步骤:首先要创建一个符合RFC-2822标准的邮件内容,然后通过SMTP协议发送它。你现在关注的是SMTP的部分,但一开始并没有创建正确的邮件内容。通过实际操作来演示会更简单。

>>> from email.mime.text import MIMEText
>>>
>>> fromaddr = 'XXXX@gmail.com'
>>> toaddrs = 'jason@XXX.com'
>>> subject = 'This is an important message'
>>> content = 'Portal Test had an error'
>>>
>>> # constructing a RFC 2822 message
... msg = MIMEText(content)
>>> msg['From'] = fromaddr
>>> msg['To'] = toaddrs
>>> msg['Subject'] = subject

RFC 2822邮件其实就是一段文本,格式大概是这样的:

>>> print msg
From nobody Tue Apr 05 11:37:50 2011
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
From: XXXX@gmail.com
To: jason@XXX.com
Subject: This is an important message

Portal Test had an error

有了这个内容,你就可以用你的SMTP代码发送邮件了。注意,像发件人和收件人这样的信息在两个步骤中都是重复出现的。

撰写回答