Python入门教程35:使用email模块发送HTML和图片邮件

smtplib模块实现邮件的发送功能,模拟一个stmp客户端,通过与smtp服务器交互来实现邮件发送的功能,可以理解成Foxmail的发邮件功能,在使用之前我们需要准备smtp服务器主机地址、邮箱账号以及密码信息。

#我的Python教程
#官方微信公众号:wdPython

**email模块:**通过邮件传输简单的文本已经无法满足我们的需求,比如我们时常会定制业务质量报表,在邮件主体中会包含 HTML、图像、声音以及附件格式等,MIME(Multipurpose Internet Mail Extensions,多用途互联网邮件扩展)作为一种新的扩展邮件格式很好地补充了这一点。
**1.今天的学习内容:**发送一张图片(刘亦菲)和html格式的邮件,图片自己百度,html格式也可以自定义优化定义。
在这里插入图片描述
2.关于qq邮箱登入方式说明:(账号+授权码登入)(其他的邮箱是账号+密码登入)。

什么是授权码,它又是如何设置?

1、什么是授权码?授权码是QQ邮箱推出的,用于登录第三方客户端的专用密码。适用于登录以下服务POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务。

温馨提醒:为了你的帐户安全,更改QQ密码以及独立密码会触发授权码过期,需要重新获取新的授权码登录。

2、怎么获取授权码?在 qq邮箱账号与安全 --安全设置–SMTP/IMAP服务中开启服务,手机号短信验证后就可以获取授权码。

3.邮件发送完成的效果
在这里插入图片描述


import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.mime.image import MIMEImage
from email.header import Header

#发送1个图片文件和html邮件
def send_email(host,from_addr,to_addrs,password):

    # 1.设置消息内容,标题,收件人,发件人等等
    # 创建邮件对象
    msg = MIMEMultipart()
    
    # 设置邮件标题
    msg['Subject'] = Header('测试发送一个图片和html邮件', 'utf-8').encode()
    
    # 设置邮件发送者
    msg['From'] = f'{from_addr} <{from_addr}>'
    
    # 设置邮件接受者
    msg['To'] = to_addrs
    
    # 2.添加发送内容
    # 添加HTML
    content = """
    <h2>我的Python教程,官方微信公众号:wdPython</h2>
    <p>这是一个简单的HTML</p>
    <p>刘亦菲的图片</p>
    <img src='cid:liuyifei'>
    <center>点击下方我的Python教程历史博文集合</center>
    <a href='https://mp.weixin.qq.com/s/LwaDH9PFLowLl8sIzaE6_w'>Python博文精选</a>
    """
    msg.attach(MIMEText(content, 'html', 'utf-8'))

    # 添加正文显示的图片
    image = MIMEImage(open('刘亦菲.png', 'rb').read())
    image.add_header('Content-ID', '<liuyifei>')
    msg.attach(image)

    # 3.发送邮件
    # 连接邮箱服务器
    smtp = smtplib.SMTP_SSL(f'smtp.{host}.com', 465)

    # 登录邮箱(如果是qq邮箱需要账号和授权码,其他的邮箱账号密码登入即可)
    smtp.login(from_addr, password)
    smtp.sendmail(from_addr, to_addrs, msg.as_string())
    smtp.quit()


if __name__ == '__main__':
     #发件人是qq邮箱
    send_email('qq','发件人邮箱地址@qq.com','收件人邮箱地址@qq.com','你的授权码')
    print('邮件已经发送完成!!')
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值