python发邮件smtplib和email模块详解

SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式。,python实现发邮件也是基于此基础上进行封装的。

  1. python发邮件所需要的基础包

    • python发送邮件需要用到python内置的两个模块,smtplib和email。直接import导入即可

    • python的smtplib提供了一种很方便的途径发送电子邮件,它对smtp协议进行了简单的封装。

  2. 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()
posted @ 2021-03-25 17:01  酒剑仙*  阅读(764)  评论(0编辑  收藏  举报