发送邮件
发送普通文本邮件
# import unittest # from HTMLTestRunner import HTMLTestRunner # import smtplib # from email.mime.text import MIMEText # from email.header import Header # from email.mime.multipart import MIMEMultipart # # # def send_mail(): # # 第三方 SMTP 服务 # mail_host = "smtp.qq.com" # 设置服务器 # mail_user = "2609768410@qq.com" # 用户名 # mail_pass = "vhxojjnwatpvebcf" # 获取授权码 # sender = '2609768410@qq.com' # 发件人账号 # receivers = ['2609768410@qq.com'] # 接收邮件(可以多个),可设置为你的QQ邮箱或者其他邮箱 # # send_content = 'Python 邮件发送测试...' # message = MIMEText(send_content, 'plain', 'utf-8') # 第一个参数为邮件内容,第二个设置文本格式,第三个设置编码 # message['From'] = Header("我是发件人", 'utf-8') # 发件人 # message['To'] = Header("我是收件人", 'utf-8') # 收件人 # # subject = '邮件大标题' # message['Subject'] = Header(subject, 'utf-8') # try: # smtpObj = smtplib.SMTP() # smtpObj.connect(mail_host, 25) # 25 为 SMTP 端口号 # smtpObj.login(mail_user, mail_pass) # smtpObj.sendmail(sender, receivers, message.as_string()) # print("邮件发送成功") # except smtplib.SMTPException: # print("Error: 无法发送邮件") # # # send_mail()
发送html格式的邮件
只需将MIMEText的第二个参数的文本类型改一下即可
# import smtplib # from email.mime.text import MIMEText # from email.header import Header # # # 第三方 SMTP 服务 # # mail_host = "smtp.qq.com" # 设置服务器 # mail_user = "2609768410@qq.com" # 用户名 # mail_pass = "vhxojjnwatpvebcf" # 获取授权码 # sender = '2609768410@qq.com' # 发件人账号 # receivers = ['2609768410@qq.com'] # 接收邮件(可以多个),可设置为你的QQ邮箱或者其他邮箱 # # send_content = """ # <h1>天不生我李淳罡</h1> # <h1>剑道万古如长夜</h1> # <p>小二上酒</p> # <img src="https://ss0.baidu.com/73t1bjeh1BF3odCf/it/u=858168512,2130327819&fm=85&s=2E4020DF1CD035FBDC9D940A0300F0F3"> # <div>阅读请 <a href="https://www.37zw.net/0/761/">点我,点我</a></div> # """ # message = MIMEText(send_content, 'html', 'utf-8') # 第一个参数为邮件内容 # message['From'] = Header("我是发件人", 'utf-8') # 发件人 # message['To'] = Header("我是收件人", 'utf-8') # 收件人 # # subject = '雪中悍刀行' # message['Subject'] = Header(subject, 'utf-8') # # try: # smtpObj = smtplib.SMTP() # smtpObj.connect(mail_host, 25) # 25 为 SMTP 端口号 # smtpObj.login(mail_user, mail_pass) # smtpObj.sendmail(sender, receivers, message.as_string()) # print("邮件发送成功") # # except smtplib.SMTPException: # print("Error: 无法发送邮件")
发送带附件的邮件
首先要创建MIMEMultipart实例,然后在构建附件,如果有多个附件的话,可依次构建,最后利用smtplib.smtp发送
import smtplib from email.mime.text import MIMEText from email.mime.multipart import MIMEMultipart from email.header import Header # 第三方 SMTP 服务 mail_host = "smtp.qq.com" # 设置服务器 mail_user = "2609768410@qq.com" # 用户名 mail_pass = "vhxojjnwatpvebcf" # 获取授权码 sender = '2609768410@qq.com' # 发件人账号 receivers = ['2609768410@qq.com'] # 接收邮件(可以多个),可设置为你的QQ邮箱或者其他邮箱 # 创建一个带附件的实例 message = MIMEMultipart() message['From'] = Header("我是发件人", 'utf-8') # 发件人 message['To'] = Header("我是收件人", 'utf-8') # 收件人 subject = 'Python发送带附件的邮件示例' message['Subject'] = Header(subject, 'utf-8') # 邮件正文内容 send_content = 'hi man,你收到附件了吗?' content_obj = MIMEText(send_content, 'plain', 'utf-8') # 第一个参数为邮件内容 message.attach(content_obj) # 构造附件,发送目录下的 report_day14.html 文件 att2 = MIMEText(open('../report/report_day14.html', 'rb').read(), 'base64', 'utf-8') att2["Content-Type"] = 'application/octet-stream' att2["Content-Disposition"] = 'attachment; filename="report_day14.html"' message.attach(att2) try: smtpObj = smtplib.SMTP() smtpObj.connect(mail_host, 25) # 25 为 SMTP 端口号 smtpObj.login(mail_user, mail_pass) smtpObj.sendmail(sender, receivers, message.as_string()) print("邮件发送成功") except smtplib.SMTPException: print("Error: 无法发送邮件")
浙公网安备 33010602011771号