7.7. 实例:将附件中内容添加到邮件正文

很多工作人员喜欢用办工软件处理文字,然后发送E-mail 时其作为附件。这其实很不方便,而且完全没有必要。

大量的通知其实没有太多的格式,重要的只是文字内容。 这里说明一下如何将文本内容直接加入到 Email 正文的方法。

>>> import smtplib
>>> from email.mime.text import MIMEText
>>> from email.mime.multipart import MIMEMultipart
>>> from email.header import Header
>>> from cfg import email_cfg
>>> sender = email_cfg['user']
>>> password=email_cfg['passwd']
>>> receivers = [email_cfg['user']]

创建一个带附件的实例,并将附件的内容写入到邮件内容里

>>> message = MIMEMultipart()
>>> message['From'] = Header("教程", 'utf-8')
>>> message['To'] =  Header("Test", 'utf-8')
>>> subject = 'Python SMTP 邮件测试'
>>> message['Subject'] = Header(subject, 'utf-8')

邮件正文内容,从想要一同发送的附件内读取出来。写入到Email正文内。

>>> cnt =open('test.txt').read()
>>> cnt
'123'
>>> message.attach(MIMEText(cnt, 'plain', 'utf-8'))

添加附件,发送当前目录下的 test.txt 文件。

>>> att1 = MIMEText(open('test.txt', 'rb').read(), 'base64', 'utf-8')
>>> att1["Content-Type"] = 'application/octet-stream'
>>> att1["Content-Disposition"] = 'attachment; filename="test.txt"'
>>> message.attach(att1)

发送邮件到指定邮箱,这里接收邮箱与发送的邮箱为同一个邮箱。

>>> try:
>>>     smtpObj = smtplib.SMTP_SSL('smtp.163.com',port=465)
>>>     smtpObj.login(sender,password)
>>>     smtpObj.sendmail(sender, receivers, message.as_string())
>>>     print ("邮件发送成功")
>>>     smtpObj.quit()
>>> except smtplib.SMTPException:
>>>     print ("Error: 无法发送邮件")
邮件发送成功