5.3.email操作

本文介绍了如何在Python中使用smtplib和email模块发送纯文本邮件,以及如何构建包含文本、HTML、图片和附件的复杂邮件。通过实例展示了如何连接SMTP服务器、身份验证和发送邮件的过程。
摘要由CSDN通过智能技术生成

发送邮件的协议是stmp,python对stmp的支持,可以发送纯文本邮件。

        在 Python 中,SMTP(Simple Mail Transfer Protocol)是一种用于发送电子邮件的协议。为了在 Python 中发送电子邮件,我们可以使用内置的 smtplibemail 模块

5.3.1.smtplib 模块:

  • smtplib 模块提供了一个简单而强大的接口,用于通过 SMTP 协议发送电子邮件。
  • 它允许连接到邮件服务器,进行身份验证,并发送邮件给指定的收件人。
  • 这个模块封装了底层的 SMTP 协议细节,使得发送电子邮件变得更加容易。

例:

# 使用 smtplib 模块发送纯文本邮件
import smtplib
import ssl
from email.message import EmailMessage
 
EMAIL_ADDRESS = "自己的@163.com"     # 邮箱的地址
EMAIL_PASSWORD = "XXXXXX"     # 授权码
 
# 也可以使用ssl模块的context加载系统允许的证书,在登录时进行验证
context = ssl.create_default_context()
 
subject = "title"
body = "welcome new day"
 
msg = EmailMessage() # EmailMessage() 是 email.message.EmailMessage 类的构造函数,用于创建一个新的邮件对象。
msg['subject'] = subject        # 邮件标题
msg['From'] = EMAIL_ADDRESS     # 邮件发件人
msg['To'] = "目标的@163.com"                  # 邮件的收件人
msg.set_content(body)           # 使用set_content()方法设置邮件的主体内容
 
# 为了防止忘记关闭连接也可以使用with语句
with smtplib.SMTP_SSL("smtp.163.com", 465, context=context) as smtp:      # 完成加密通讯
 
    # 连接成功后使用login方法登录自己的邮箱
    smtp.login(EMAIL_ADDRESS, EMAIL_PASSWORD)
  
    # 方式二:使用send_message方法发送邮件信息
    smtp.send_message(msg)
 
 
 

5.3.2.email模块

  • email 模块提供了创建和处理电子邮件的功能,可以构建复杂的邮件消息。
  • 它允许你设置邮件的发件人、收件人、主题、正文、附件等,并生成符合标准的 MIME(Multipurpose Internet Mail Extensions)格式的邮件消息。
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from email.mime.image import MIMEImage
import smtplib

# 配置邮箱及密码
from_mail = '自己的@163.com'
from_mail_password = '授权码'
to_mail = '目标的@163.com'

# 设置总的邮件体对象,对象类型为mixed
msg = MIMEMultipart('mixed')

# 邮件的发件人及收件人信息
msg['From'] = from_mail
msg['To'] = to_mail

# 邮件的主题
msg['Subject'] = 'python mail test'

# 构造文本内容
text_info = 'hello world'
text_sub = MIMEText(text_info, 'plain', 'utf-8')
msg.attach(text_sub)

# 构造超文本
url = "https://docs.python.org/ja/3/library/email.examples.html"
html_info = """
<p>点击下面链接试试</p>
<p><a href="%s">click me</a></p>
<p>welcome new world</p>
"""% url
html_sub = MIMEText(html_info, 'html', 'utf-8')
# 如果不加下边这行代码的话,上边的文本是不会正常显示的,会把超文本的内容当做文本显示
html_sub["Content-Disposition"] = 'attachment; filename="aaa.html"'
# 把构造的内容写到邮件体中
msg.attach(html_sub)

# 构造图片
image_file = open(r'本地\img0.jpg', 'rb').read()
image = MIMEImage(image_file)
image.add_header('Content-ID', '<image1>')
# 如果不加下边这行代码的话,会在收件方方面显示乱码的bin文件,下载之后也不能正常打开,这个地方也可以对文件重命名
image["Content-Disposition"] = 'attachment; filename="aaa.png"'
msg.attach(image)

# 构造附件
txt_file = open(r'本地\csv_op_t1.py', 'rb').read()
txt = MIMEText(txt_file, 'base64', 'utf-8')
txt["Content-Type"] = 'application/octet-stream'
#重命名附件为aaa.txt
txt.add_header('Content-Disposition', 'attachment', filename='aaa.py')
msg.attach(txt)

try:
    server = smtplib.SMTP('smtp.163.com')
    server.starttls()
    server.login(from_mail,from_mail_password)

    server.sendmail(from_mail,to_mail,msg.as_string())
    server.quit()
    print('sendemail successful!')
except Exception as e:
    print('sendemail failed next is the reason')
    print(e)

email的例子参照:

Python常用模块8-Python的email模块简介 - 简书 (jianshu.com)

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值