发送邮件

发送普通文本邮件

# 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>阅读请&nbsp;<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: 无法发送邮件")

 

 

 

posted @ 2022-08-11 10:41  爱coding的果妈  阅读(91)  评论(0)    收藏  举报