python发邮件smtplib和email模块详解
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()