Discuss / Python / SMTP

!/usr/bin/env python3

-- coding:utf-8 --

from email.mime.text import MIMEText from email.utils import parseaddr,formataddr from email.header import Header from email import encoders from email.mime.multipart import MIMEMultipart from email.mime.base import MIMEBase

import smtplib

def _format_addr(s): name, addr = parseaddr(s) return formataddr((Header(name, 'utf-8').encode(), addr))

from_addr = '@qq.com' password = 'ixrvcqnqufotbdba' to_addr = '*@qq.com' smtp_server = 'smtp.qq.com'

邮件对象:构造MIMEMultipart对象做为根容器

msg = MIMEMultipart() msg['From'] = _format_addr('满腹的小不甘<%s>' % from_addr) msg['To'] = _format_addr('dear 骑士<%s>' % to_addr) msg['Subject'] = Header('来自灰姑娘的问候......','utf-8').encode()

邮件正文:构造MIMEText对象做为邮件显示内容并附加到根容器

msg.attach(MIMEText('Darling,这是一封由python代码发送的邮件,是不是很有趣,哈哈哈','plain','utf-8'))

msg.attach(MIMEText('<html><body><h2>Hello</h2>' + '<p>Darling,这是一封由python代码发送的邮件,是不是很有趣,哈哈哈</p>' + '</body></html>', 'html', 'utf-8'))

附件:构造MIMEBase对象做为文件附件内容并附加到根容器

with open('E:/新员工入职指南.pdf','rb') as f:

# 设置附件的MIME和文件名,这里是png类型:
mime = MIMEBase('text','pdf',filename=('gbk','','入职指南.pdf'))
# 加上必要的头信息
mime.add_header('Content-Disposition','attachment',filename=('gbk','','入职指南.pdf'))
mime.add_header('Content-ID','<0>')
mime.add_header('X-Attachment-Id','0')
# 把附件的内容读进来
mime.set_payload(f.read())
encoders.encode_base64(mime)
# 添加到MIMEMultipart
msg.attach(mime)

with open('G:/monkey.jpg','rb') as f:

# 设置附件的MIME和文件名,这里是png类型:

mime = MIMEBase('image','jpg',filename='monkey.jpg')

# 加上必要的头信息

mime.add_header('Content-Disposition','attachment',filename='monkey.jpg')

mime.add_header('Content-ID','<0>')

mime.add_header('X-Attachment-Id','0')

# 把附件的内容读进来

mime.set_payload(f.read())

encoders.encode_base64(mime)

# 添加到MIMEMultipart

msg.attach(mime)

server = smtplib.SMTP(smtp_server,25) server.set_debuglevel(1) server.login(from_addr,password) server.sendmail(from_addr,to_addr,msg.as_string()) server.quit()


  • 1

Reply