刚到新公司,这段时间一直在忙,本身有开发工作的任务,现在兼顾PM的角色,学习只能靠零散的时间了
前言:今天来分享一下使用python发邮件
代码示例:
# -*- coding: UTF-8 -*-
import smtplib
from email.mime.base import MIMEBase
from email import encoders
from email.header import Header
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from email.utils import parseaddr, formataddr
def _format_addr(s):
name, addr = parseaddr(s)
return formataddr((Header(name, 'utf-8').encode(), addr))
# 第三方 SMTP 服务
mail_host="smtp.163.com" #设置服务器
mail_user="XXX@163.com" #用户名
mail_pass="********" #密码
sender = mail_user
receivers = ['XXX@163.com'] # 接收邮件,可设置为你的QQ邮箱或者其他邮箱
# 邮件对象:
message = MIMEMultipart()
message['From'] = _format_addr('淘宝管理员 <%s>' % sender)
message['To'] = _format_addr('收件人 <%s>' % receivers[0])
message['Subject'] = Header('来自淘宝内部优惠券链接', 'utf-8').encode()
# 邮件正文是MIMEText:
message.attach(MIMEText('
'
' +'', 'html', 'utf-8'))
# 添加附件就是加上一个MIMEBase,从本地读取一个图片:
with open('/Users/hsm/AI/Python/image/fengmi.png', 'rb') as f:
# 设置附件的MIME和文件名,这里是png类型:
mime = MIMEBase('image', 'png', filename='fengmi.png')
# 加上必要的头信息:
mime.add_header('Content-Disposition', 'attachment', filename='fengmi.png')
mime.add_header('Content-ID', '<0>')
mime.add_header('X-Attachment-Id', '0')
# 把附件的内容读进来:
mime.set_payload(f.read())
# 用Base64编码:
encoders.encode_base64(mime)
# 添加到MIMEMultipart:
message.attach(mime)
try:
smtpObj = smtplib.SMTP()
smtpObj.connect(mail_host, 25) # 25 为 SMTP 端口号
smtpObj.set_debuglevel(1) #设置为1,可以查看运行日志
smtpObj.login(mail_user,mail_pass)
smtpObj.sendmail(sender, receivers, message.as_string())
print "邮件发送成功"
except smtplib.SMTPException:
print "Error: 无法发送邮件"
运行结果:
讲解:以上使用163做例子,
Python内置对SMTP的支持,可以发送纯文本邮件、HTML邮件以及带附件的邮件。
Python对SMTP支持有smtplib和email两个模块,email负责构造邮件,smtplib负责发送邮件。
只要掌握了各种邮件类型的构造方法,正确设置好邮件头,就可以顺利发出。
构造一个邮件对象就是一个Messag对象,如果构造一个MIMEText对象,就表示一个文本邮件对象,如果构造一个MIMEImage对象,就表示一个作为附件的图片,要把多个对象组合起来,就用MIMEMultipart对象,而MIMEBase可以表示任何对象。它们的继承关系如下:
页面更新:2024-03-05
本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828
© CopyRight 2020-2024 All Rights Reserved. Powered By 71396.com 闽ICP备11008920号-4
闽公网安备35020302034903号