0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何用python发送接收邮件

sanyue7758 来源:处芯积律 2023-07-11 09:30 次阅读

SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式。

Python发送邮件比较简单,掌握两个自带库 smtplib、email 即可,smtplib 负责发送邮件,email 负责构造邮件(邮件内容,主题,收件人,抄送人等)。

python的smtplib提供了一种很方便的途径发送电子邮件。它对smtp协议进行了简单的封装。

MIMEText用于电子邮件正文

MIMEMultipart用于电子邮件结构

MIMEApplication用于在电子邮件中添加二进制数据(如文件附件)

MIMEImage用于图片

importsmtplib
fromemail.mime.imageimportMIMEImage
fromemail.mime.textimportMIMEText
fromemail.headerimportHeader
fromemail.mime.multipartimportMIMEMultipart
fromemail.mime.applicationimportMIMEApplication

1.发送邮件(可带附件)

下面是一个使用Python中的smtplib库发送电子邮件的示例代码。

importsmtplib
fromemail.mime.textimportMIMEText
fromemail.mime.multipartimportMIMEMultipart
fromemail.mime.applicationimportMIMEApplication

#设置发送邮件的信息
sender_email='xxx@qq.com'#发件人邮箱账号
sender_password='xxx'#发件人邮箱授权码
receiver_email='xxx@qq.com'#收件人邮箱账号
subject='Thisisatestemailby数字ICer'#邮件的主题

smtp_server='smtp.qq.com'#qq邮箱的SMTP服务器
smtp_port=465#qq邮箱的SMTP服务器端口465

defsend_email():
ret=True
try:
#创建一个multipart的邮件对象
msg=MIMEMultipart()
msg['From']=sender_email
msg['To']=receiver_email
msg['Subject']=subject

#添加邮件正文
body='Hello,thisisatestemail.'
msg.attach(MIMEText(body,'plain'))

#添加附件
#filename='attachment.pdf'
#withopen(filename,'rb')asf:
#attachment=MIMEApplication(f.read(),_subtype='pdf')
#attachment.add_header('Content-Disposition','attachment',filename=filename)
#msg.attach(attachment)
#
#发送邮件
withsmtplib.SMTP_SSL(smtp_server,smtp_port)assmtp:
smtp.login(sender_email,sender_password)
smtp.sendmail(sender_email,receiver_email,msg.as_string())
print("邮件发送成功")
exceptExceptionase:
print("邮件发送失败:",e)
send_email()

上面使用QQ邮箱帐户发送邮件,也可以使用其他邮箱,需要定义邮箱的SMTP服务器和端口。

对于QQ邮箱,SMTP服务器是smtp.qq.com,SMTP端口是465。

生成授权码

邮箱设置-->账户

设置POP3/IMAP/SMTP服务中

点击生成授权码,sender_password = 'xxx' 即为授权码,并不是你的qq邮箱密码;

074291de-1f28-11ee-962d-dac502259ad0.png授权码

定义发件人电子邮件地址、授权码和收件人电子邮件地址。

使用MIMEMultipart()创建一个多部分消息。使用msg['From']、msg['To']和msg['Subject']向消息添加发件人、收件人和主题。

使用MIMEText(body, 'plain')向消息添加邮件正文。

使用MIMEApplication()向消息添加附件。

其中 MIMEText 构造对象时,第一个参数是邮件正文;第二个参数是subType,可以设置两种格式 'plain' 和 'html';‘plain’ 表示发送纯文本消息。

07617dec-1f28-11ee-962d-dac502259ad0.png发送邮件(可带附件)

2.发送HTML格式的邮件

下面是发送HTML格式电子邮件的示例代码。

importsmtplib
fromemail.mime.textimportMIMEText
fromemail.headerimportHeader
fromemail.mime.multipartimportMIMEMultipart
fromemail.mime.applicationimportMIMEApplication


sender_email='xxx@qq.com'#发件人邮箱账号
sender_password='xxx'#发件人邮箱授权码
receiver_email='xxx@qq.com'#收件人邮箱账号
subject='Thisisatestemailby数字ICer'#邮件的主题
smtp_server='smtp.qq.com'#qq邮箱的SMTP服务器
smtp_port=465#qq邮箱的SMTP服务器端口465

mail_msg="""

Python邮件发送测试...

这是一个链接

""" msg=MIMEText(mail_msg,'html','utf-8') msg['From']=Header("sender_email",'utf-8') msg['To']=Header("receiver_email",'utf-8') msg['Subject']=Header(subject,'utf-8') try: withsmtplib.SMTP_SSL(smtp_server,smtp_port)assmtp: smtp.login(sender_email,sender_password) smtp.sendmail(sender_email,receiver_email,msg.as_string()) print("邮件发送成功") exceptsmtplib.SMTPException: print("Error:无法发送邮件")

email.header是Python标准库中的一个模块,Header类是一个用于处理电子邮件头部的工具,它可以处理中文等非ASCII字符集,确保电子邮件头部可以正确显示和解析。

当在电子邮件头部中使用中文或其他非ASCII字符时,需要对这些字符进行编码,以确保电子邮件头部可以被正确地显示和解析。Header类可以将这些非ASCII字符编码为合适的格式。

07880336-1f28-11ee-962d-dac502259ad0.png

发送HTML格式的邮件






审核编辑:刘清

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • SMTP
    +关注

    关注

    0

    文章

    32

    浏览量

    11942
  • HTML
    +关注

    关注

    0

    文章

    278

    浏览量

    35414
  • python
    +关注

    关注

    56

    文章

    4797

    浏览量

    84700

原文标题:如何用python发送接收邮件

文章出处:【微信号:处芯积律,微信公众号:处芯积律】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    在Java中如何使用API来完成邮件接收发送

    接收发送。 通过该篇文章我们可以有如下收获: 了解基于Java的电子邮件客户端的实现方式 了解常见的邮箱如何集成 认识邮箱中的IMAP与POP协议 适用场景 邮件和短信很像,将信息
    的头像 发表于 09-30 14:09 3441次阅读
    在Java中如何使用API来完成<b class='flag-5'>邮件</b>的<b class='flag-5'>接收</b>与<b class='flag-5'>发送</b>

    何用LabVIEW接收E-mail?

    我用的是LabVIEW2012 。想做个发送接收电子邮件的程序。查看了网上的资料,没有收获。求教各位大哥了!如何用LabVIEW接收E-m
    发表于 04-14 20:29

    Labview发送notes邮件

    请前辈点拨如何用labview发送notes邮件,公司用这个邮件系统,但是通过用例的方式是无法发出邮件的,求教
    发表于 07-21 09:43

    何用Python Ginkgo USB-CAN发送接收数据

    :Ginkgo USB-CAN Extend软件对于第2项(开源python项目):Python CAN数据发送接收PC:两台PC(PC1,PC2)程序:1.确保在两台PC上都正确安
    发表于 03-12 10:32

    何用python中的serial向串口发送接收数据?

    何用python中的serial向串口发送接收数据?
    发表于 11-22 06:35

    何用Foxmail Server搭建邮件服务器

    何用Foxmail Server搭建邮件服务器 Foxmail Server(以下简称FMS)可以搭建出功能强大的邮件服务器。本文以FMS For Windows 2.0为例,从其设置、管理、收
    发表于 01-27 17:05 1349次阅读

    C#教程之调用Outlook发送邮件

    C#教程之调用Outlook发送邮件,很好的C#资料,快来学习吧。
    发表于 04-20 15:27 4次下载

    如何向您选择的某人发送电子邮件

    您可以通过单击左侧的“发送”选项卡来确认您的电子邮件是否已发送。它将显示您发送的所有电子邮件。如果未显示最近
    的头像 发表于 12-13 16:35 5047次阅读
    如何向您选择的某人<b class='flag-5'>发送电子邮件</b>

    基于SpringBoot实现邮件发送

    本项目通过Springboot发送email邮件,包括普通文本邮件 、HTML内容板式邮件 、包含静态资源邮件以及带附件
    的头像 发表于 02-28 14:58 1262次阅读
    基于SpringBoot实现<b class='flag-5'>邮件</b><b class='flag-5'>发送</b>

    何用python邮件呢?

    先做一些准备,把邮件SMTP服务器、收发mail、邮件标题和正文准备好。
    的头像 发表于 03-06 14:49 777次阅读

    怎么用Python构建一个自动发送邮件的脚本

    ? 类似的应用场景还有很多,不仅仅是在股票策略提醒上,比如定时向某些人发送邮件;网站宕机了,实时发送邮件提醒;网站负载过高,发送
    的头像 发表于 10-21 14:47 765次阅读
    怎么用<b class='flag-5'>Python</b>构建一个自动<b class='flag-5'>发送</b><b class='flag-5'>邮件</b>的脚本

    怎么用Python构建一个自动发送邮件的脚本

    呢? 类似的应用场景还有很多,不仅仅是在股票策略提醒上,比如定时向某些人发送邮件;网站宕机了,实时发送邮件提醒;网站负载过高,发送
    的头像 发表于 10-31 16:36 553次阅读
    怎么用<b class='flag-5'>Python</b>构建一个自动<b class='flag-5'>发送</b><b class='flag-5'>邮件</b>的脚本

    何用Python批量定制化发送邮件

    一封精美的元旦祝福邮件,但是邮件的内容——比如姓名、祝福语等应该怎样动态渲染呢?答案是jinja2. jinja2 是一个Python 的模板引擎,使用jinja2,我们能够在邮件HT
    的头像 发表于 11-01 11:32 2212次阅读

    利用Python发送邮件的 3 种方式

    1. 前言 邮件,作为最正式规范的沟通方式,在日常办公过程中经常被用到 我们都知道 Python内置了对 SMTP 的支持,可以发送纯文本、富文本、HTML 等格式的邮件 本文将聊聊利
    的头像 发表于 11-02 11:37 970次阅读

    如何使用Python编写脚本来自动发送邮件

    Python是一种非常流行的编程语言,可以用于多种用途,包括自动化任务。其中一个常见的自动化任务是自动发送邮件。在本文中,我们将介绍如何使用Python编写脚本来自动
    的头像 发表于 12-07 11:36 1368次阅读