[转]python发邮件smtplib和email模块详解
本文转自:https://www.cnblogs.com/auguse/articles/14578247.html
SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式。,python实现发邮件也是基于此基础上进行封装的。
-
-
python发送邮件需要用到python内置的两个模块,smtplib和email。直接import导入即可
-
python的smtplib提供了一种很方便的途径发送电子邮件,它对smtp协议进行了简单的封装。
-
-
smtplib的用法
smtplib用法相对来说很简单,就是分为三步。
-
创建SMTP的操作对象并连接smtp目标服务器,可以是126、163、QQ等
-
根据自己的账号登录目标服务器(自己的邮箱地址和邮箱授权码)
-
-
实例一:发送普通邮件
#需要使用smtplib库,来进行邮箱的连接
import smtplib
#处理邮件内容 MIMEText为文本内容
from email.mime.text import MIMEText
#****************编写一封邮件********************
#邮件正文
content = '你好,蜗牛BOSS4.0已经测试完成,测试通过'
#三个参数:第一个为文本内容,第二个 plain 设置文本格式,第三个 utf-8 设置编码
msg = MIMEText(content, 'plain', "utf-8")
#定义邮件主题
msg['Subject'] = "邮件主题"
#发件人
msg['From'] = "Auguses@126.com"
#收件人
msg["To"] = "248149232@qq.com"
#******************发送邮件***********************
#第一参数是smtp服务器,第二参数是端口
smtp = smtplib.SMTP_SSL("smtp.126.com", port=465)
#使用用户名和授权码登录
smtp.login("Auguses@126.com", "safsafsadfsafa")
#三个参数:发件人、收件人、as_string()是将msg(MIMEText或MIMEMultipart对象)变为str
smtp.sendmail("Auguses@126.com", "248149232@qq.com", msg.as_string())
smtp.quit()
实例二:发送HTML内容
#需要使用smtplib库,来进行邮箱的连接
import smtplib
#处理邮件内容 MIMEText为文本内容
from email.mime.text import MIMEText
#****************发送HTML格式的邮件********************
#邮件正文
content = """
<p>xx系统测试结果说明:</p>
<p><a href="http://www.baidu.com">本次测试通过,点击即可查看详细信息</a></p>
"""
#三个参数:第一个为文本内容,如果是文本内容则写 plain,本次内容为HTML,则写成HTML,第三个 utf-8 设置编码
msg = MIMEText(content, 'html', "utf-8")
#定义邮件主题
msg['Subject'] = "邮件主题"
#发件人
msg['From'] = "Auguses@126.com"
#收件人
msg["To"] = "248149232@qq.com"
#******************发送邮件***********************
#第一参数是smtp服务器,第二参数是端口
smtp = smtplib.SMTP_SSL("smtp.126.com", port=465)
#使用用户名和授权码登录
smtp.login("Auguses@126.com", "SBRIVHsafdsafdsad")
#三个参数:发件人、收件人、as_string()是将msg(MIMEText或MIMEMultipart对象)变为str
smtp.sendmail("Auguses@126.com", "248149232@qq.com", msg.as_string())
smtp.quit()
实例三:发送邮件带附件(非图片)
#需要使用smtplib库,来进行邮箱的连接
import smtplib
#处理邮件内容 MIMEText为文本内容
from email.mime.text import MIMEText
#MIMEMultipart创建带附件的邮箱实例
from email.mime.multipart import MIMEMultipart
#****************邮件带附件(非图片)********************
#创建带附件的邮件实例
msg = MIMEMultipart()
#定义邮件主题
msg['Subject'] = "邮件主题"
#发件人
msg['From'] = "Auguses@126.com"
#收件人
msg["To"] = "248149232@qq.com"
#邮件正文
content = """念去去、千里烟波、暮霭沉沉楚天阔"""
#三个参数:第一个为文本内容,如果是文本内容则写,第三个 utf-8 设置编码
msg.attach(MIMEText(content, 'plain', "utf-8"))
#构造附件,传送当前目录下的 test.txt 文件
att = MIMEText(open('test.txt', 'rb').read(), 'base64', 'utf-8')
att["Content-Type"] = 'application/octet-stream'
# 这里的filename可以任意写,写什么名字,邮件中显示什么名字
att["Content-Disposition"] = 'attachment; filename="test.txt"'
msg.attach(att)
#******************发送邮件***********************
#第一参数是smtp服务器,第二参数是端口
smtp = smtplib.SMTP_SSL("smtp.126.com", port=465)
#使用用户名和授权码登录
smtp.login("Auguses@126.com", "SASBRISADASDADJGRC")
#三个参数:发件人、收件人、as_string()是将msg(MIMEText或MIMEMultipart对象)变为str
smtp.sendmail("Auguses@126.com", "248149232@qq.com", msg.as_string())
smtp.quit()
实例四:发送邮件带附件图片
#需要使用smtplib库,来进行邮箱的连接
import smtplib
#处理邮件内容 MIMEText为文本内容
from email.mime.text import MIMEText
#MIMEMultipart创建带附件的邮箱实例
from email.mime.multipart import MIMEMultipart
#****************邮件带附件图片********************
#创建带附件的邮件实例
msg = MIMEMultipart()
#定义邮件主题
msg['Subject'] = "邮件主题"
#发件人
msg['From'] = "Auguses@126.com"
#收件人
msg["To"] = "248149232@qq.com"
#邮件正文
content = """念去去、千里烟波、暮霭沉沉楚天阔"""
#三个参数:第一个为文本内容,如果是文本内容则写,第三个 utf-8 设置编码
msg.attach(MIMEText(content, 'plain', "utf-8"))
#构造附件,传送当前目录下的 test.txt 文件
att = MIMEText(open('1.jpg', 'rb').read(), 'base64', 'utf-8')
att["Content-Type"] = 'application/octet-stream'
# 这里的filename可以任意写,写什么名字,邮件中显示什么名字
att["Content-Disposition"] = 'attachment; filename="1.jpg"'
msg.attach(att)
#******************发送邮件***********************
#第一参数是smtp服务器,第二参数是端口
smtp = smtplib.SMTP_SSL("smtp.126.com", port=465)
#使用用户名和授权码登录
smtp.login("Auguses@126.com", "DSDFSFSAFSDFEU")
#三个参数:发件人、收件人、as_string()是将msg(MIMEText或MIMEMultipart对象)变为str
smtp.sendmail("Auguses@126.com", "248149232@qq.com", msg.as_string())
smtp.quit()
__EOF__
posted on 2023-01-27 21:19 freeliver54 阅读(250) 评论(0) 编辑 收藏 举报
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
2019-01-27 [转]Database Transactions in Laravel
2018-01-27 [转]React 教程
2018-01-27 [转]VS2012正则查找
2015-01-27 [转]在asp.net mvc中使用PartialView返回部分HTML段
2015-01-27 [转]Asp.net MVC中Html.Partial, RenderPartial, Action,RenderAction 区别和用法
2014-01-27 [转]position:relative leaves an empty space