Python SMTP发送邮件

Posted on 2017-08-24 16:22  KyMo  阅读(112)  评论(0)    收藏  举报
import smtplib

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

# 格式化邮件地址
def _format_addr(s): name, addr = parseaddr(s) return formataddr((Header(name, 'utf-8').encode(), addr)) from_addr = input('From: ') password = input('Password: ') to_addr = input('To: ') smtp_server = input('SMTP server: ') smtp_server_port = input('Port: ')
# 邮件对象 msg
= MIMEMultipart() msg['From'] = _format_addr('machen<%s>' % from_addr) msg['To'] = _format_addr('guanli <%s>' % to_addr) msg['Subject'] = Header('hello', 'utf-8').encode()
# 连接邮件正文MIMEText msg.attach(MIMEText(
'<html><body><h1>Hello</h1>' + '<p><img src="cid:0"></p>' + '</body></html>', 'html', 'utf-8'))
# 添加邮件附件即添加一个MIMEBase with open(
'test.png', 'rb') as f:
# 附件的类型为图片,且为png类型文件, 附件名为test.png mime
= MIMEBase('image', 'png', filename='test.png')
# 必要的头信息 mime.add_header(
'Content-Disposition', 'attachment', filename='test.png') mime.add_header('Content-ID', '<0>') mime.add_header('X-Attachment-ID', '0')
# 将需要的附件的内容加载进mine mime.set_payload(f.read())
# 编码类型为base64 encoders.encode_base64(mime)
# 将MIMEBase对象mime连接进MIMEMultipart msg.attach(mime) # 设置SMTP服务器地址和端口 server
= smtplib.SMTP(smtp_server, int(smtp_server_port))
# 用STARTTlS方式加密SMTP server.starttls()
# 打印出和SMTP服务器交互的所有信息 server.set_debuglevel(
1)
# 登录账户 server.login(from_addr, password)
# 发送邮件, as_string把对象转化为str server.sendmail(from_addr, [to_addr], msg.as_string()) server.quit()