python使用smtplib和MIMEText发送邮件
</div>
<div class="article-box__content">
<div class="detail-box">
<div class="article-detail">
<div class="content">
<blockquote>
本章以qq为例,使用前先在邮箱-设置-账户-开通POP3/SMTP服务,需要发送手机验证码,返回一个授权码


代码
import smtplib
from email.mime.text import MIMEText
def sendmail(subject, content):
email_host = 'smtp.qq.com' # 发送者是qq邮箱
email_user = '你填写授权码的qq邮箱@qq.com' # 发送者账号
email_pwd = '你的授权码' # 发送者密码
maillist ='你的接受者账号@qq.com' # 接收者账号,本来想写成[]list的,但是报错,还没解决!
me = email_user
msg = MIMEText(content, <span class="hljs-string">'html'</span>, <span class="hljs-string">'utf-8'</span>) <span class="hljs-comment"># 邮件内容,三个参数:第一个为文本内容,第二个 html 设置文本格式,第三个 utf-8 设置编码</span>
msg[<span class="hljs-string">'Subject'</span>] = subject <span class="hljs-comment"># 邮件主题</span>
msg[<span class="hljs-string">'From'</span>] = me <span class="hljs-comment"># 发送者账号</span>
msg[<span class="hljs-string">'To'</span>] = maillist <span class="hljs-comment"># 接收者账号列表(列表没实现)</span>
smtp = smtplib.SMTP(email_host) <span class="hljs-comment"># 如上变量定义的,是qq邮箱</span>
smtp.login(email_user, email_pwd) <span class="hljs-comment"># 发送者的邮箱账号,密码</span>
smtp.sendmail(me, maillist, msg.as_string()) <span class="hljs-comment"># 参数分别是发送者,接收者,第三个不知道</span>
smtp.quit() <span class="hljs-comment"># 发送完毕后退出smtp</span>
<span class="hljs-keyword">print</span> (<span class="hljs-string">'email send success.'</span>)
sendmail(‘主题’, ‘内容’) # 调用发送邮箱的函数
demo1.py
# smtp =>simple mail transfer protocol 简单邮件传输协议
import smtplib
import email # 文件名不可以和引入的库同名
from email.mime.image import MIMEImage # 图片类型邮件
from email.mime.text import MIMEText # MIME 多用于邮件扩充协议
from email.mime.multipart import MIMEMultipart # 创建附件类型
HOST = ‘smtp.qq.com’ # 调用的邮箱借借口
SUBJECT = ‘发送了一封测试邮件’ # 设置邮件标题
FROM = ‘你的授权码邮箱@qq.com’ # 发件人的邮箱需先设置开启smtp协议
TO = ‘发送者qq邮箱@qq.com’ # 设置收件人的邮箱(可以一次发给多个人,用逗号分隔)
message = MIMEMultipart(‘related’) # 邮件信息,内容为空 #相当于信封##related表示使用内嵌资源的形式,将邮件发送给对方
def sendmail(HOST, SUBJECT,FROM,TO,message):
“”"
发送邮件主体到对方邮箱
:发送信息参数说明:
1.内容必须是字符串
2.内容形式,文本类型默认为plain
3.内容编码使用utf-8
:其他:
图片和excel文件需要和本脚本一个目录下
“”"
<span class="hljs-comment"># ===========发送信息内容=============</span>
<span class="hljs-comment"># message_html = MIMEText('shuai123 消灭不开行', 'plain', 'utf-8')</span>
message_html = MIMEText(<span class="hljs-string">'<h1 style="color:red;font-size:100px">测试信息已收到</h1><img src="cid:small">'</span>, <span class="hljs-string">'html'</span>, <span class="hljs-string">'utf-8'</span>)
message.attach(message_html)
<span class="hljs-comment"># ===========发送图片-=============</span>
<span class="hljs-comment">#发送图片-预览信息</span>
image_data = open(<span class="hljs-string">'email_demo.jpg'</span>, <span class="hljs-string">'rb'</span>)
message_image = MIMEImage(image_data.read())
image_data.close()<span class="hljs-comment"># 关闭刚才打开的文件</span>
message_image.add_header(<span class="hljs-string">'Content-ID'</span>, <span class="hljs-string">'small'</span>)
message.attach(message_image)<span class="hljs-comment"># 添加图片文件到邮件信息中去</span>
<span class="hljs-comment">#发送图片-附件</span>
message_image = MIMEText(open(<span class="hljs-string">'email_demo.jpg'</span>, <span class="hljs-string">'rb'</span>).read(), <span class="hljs-string">'base64'</span>, <span class="hljs-string">'utf-8'</span>)
message_image[<span class="hljs-string">'Content-disposition'</span>] = <span class="hljs-string">'attachment;filename="email_demo_change.jpg"'</span><span class="hljs-comment"># 设置图片在附件当中的名字</span>
message.attach(message_image)<span class="hljs-comment"># 添加图片文件到邮件-附件中去</span>
<span class="hljs-comment"># ===========发送excel-附件=============</span>
message_xlsx = MIMEText(open(<span class="hljs-string">'email_demo.xlsx'</span>, <span class="hljs-string">'rb'</span>).read(), <span class="hljs-string">'base64'</span>, <span class="hljs-string">'utf-8'</span>)<span class="hljs-comment"># 将xlsx文件作为内容发送到对方的邮箱读取excel,rb形式读取,对于MIMEText()来说默认的编码形式是base64 对于二进制文件来说没有设置base64,会出现乱码</span>
message_xlsx[<span class="hljs-string">'Content-Disposition'</span>] = <span class="hljs-string">'attachment;filename="email_demo_change.xlsx"'</span><span class="hljs-comment"># 设置文件在附件当中的名字</span>
message.attach(message_xlsx)<span class="hljs-comment"># 添加excel文件到邮件-附件中去</span>
<span class="hljs-comment"># ===========配置相关-=============</span>
message[<span class="hljs-string">'From'</span>] = FROM <span class="hljs-comment"># 设置邮件发件人</span>
message[<span class="hljs-string">'TO'</span>] = TO <span class="hljs-comment"># 设置邮件收件人</span>
message[<span class="hljs-string">'Subject'</span>] = SUBJECT <span class="hljs-comment"># 设置邮件标题</span>
email_client = smtplib.SMTP_SSL()<span class="hljs-comment"># 获取江建有奖传输协议证书</span>
email_client.connect(HOST, <span class="hljs-string">'465'</span>)<span class="hljs-comment"># 设置发送域名,端口465</span>
result = email_client.login(FROM, <span class="hljs-string">'你的QQ授权码'</span>) <span class="hljs-comment"># qq授权码</span>
print(<span class="hljs-string">'登录结果'</span>, result)
<span class="hljs-comment"># ===========操作=============</span>
email_client.sendmail(from_addr=FROM, to_addrs=TO.split(<span class="hljs-string">','</span>), msg=message.as_string()) <span class="hljs-comment">#发送邮件指令</span>
email_client.close()<span class="hljs-comment"># 关闭邮件发送客户端</span>
if name == ‘main’:
sendmail(HOST=HOST, SUBJECT=SUBJECT,FROM=FROM,TO=TO,message=message)
demo2.py
参考文档
1.使用Python来操作邮箱:https://blog.csdn.net/qq_38059635/article/details/81569081
2.python3 发邮件 smtplib & email 库:https://www.cnblogs.com/vivivi/p/5952093.html
<div class="tags-box">
<div class="tags-box__inner">
<a class="tag-item" href="https://www.oschina.net/p/python">Python</a> </div>
</div>
<div class="copyright-box">
<div class="copyright-box__content">
<p>© 著作权归作者所有</p>
</div>
<div class="copyright-box__extra">
<span class="ban clickable" ban-report="" data-id="2223354" data-obj-type="3" data-url="https://my.oschina.net/u/3018050/blog/2223354"><i class="flag icon"></i>举报</span>
</div>
</div>
<div class="action-box">
<div class="action-item">
<div class="action-item__button donate" donate="" data-id="2223354" data-obj-type="16344358" data-subject="python使用smtplib和MIMEText发送邮件" data-donater="" data-author="3018050" data-return-url="https://my.oschina.net/u/3018050/blog/2223354" data-notify-url="https://my.oschina.net/action/donate/paySuccess"> <i class="oicon oicon-money-bold"></i>
</div>
<div class="action-item__text">打赏</div>
</div>
<div class="action-item">
<div class="action-item__button like-btn toggle-article-like " data-id="2223354">
<i class="oicon oicon-thumb-up"></i>
</div>
<div class="action-item__text"><span data-article-like-count="">0</span> 赞</div>
</div>
<div class="action-item">
<div class="action-item__button collect-btn " data-id="2223354" data-user-id="3018050" data-obj-type="3" data-max="99" data-tag-required="" data-current-user-id="" data-recommend-tags="Python" data-uncollected-class="oicon oicon-star" data-collected-class="oicon oicon-star">
<i class="oicon oicon-star"></i>
</div>
<div class="action-item__text"><span data-collect-count="" data-id="2223354" data-obj-type="3">6</span> 收藏</div>
</div>
<div class="action-item">
<div class="osc-share ui floating dropdown" data-tag="share-blog" tabindex="0">
<div class="action-item__button"><i class="oicon oicon-share"></i></div>
<div class="menu" tabindex="-1">
<a class="item" data-platform="wechat" data-value="wechat"><i class="weixin icon"></i>微信</a>
<a class="item" data-platform="qq" data-value="qq"><i class="qq icon"></i>QQ</a>
<a class="item" data-platform="weibo" data-value="weibo"><i class="weibo icon"></i>微博</a>
</div>
</div>
<div class="action-item__text">分享</div>
</div>
</div>
<div class="recommend-box">
<div class="recommend-box__header">
<h3 class="recommend-box__title">作者的其它热门文章</h3>
</div>
<div class="recommend-box__content">
<div class="item-list">
<div class="item">
<a href="https://my.oschina.net/u/3018050/blog/2049912" target="_blank" title="vue开源项目">vue开源项目</a>
</div>
<div class="item">
<a href="https://my.oschina.net/u/3018050/blog/1821742" target="_blank" title="vue的video插件vue-video-player">vue的video插件vue-video-player</a>
</div>
<div class="item">
<a href="https://my.oschina.net/u/3018050/blog/1808448" target="_blank" title="python+opengl显示三维模型小程序">python+opengl显示三维模型小程序</a>
</div>
<div class="item">
<a href="https://my.oschina.net/u/3018050/blog/1798117" target="_blank" title="python,django,pip一些查看版本,升级版本的命令">python,django,pip一些查看版本,升级版本的命令</a>
</div>
</div>
</div>
</div>
</div>
</div>