首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Python: 通过QQ邮箱发送电子邮件

Python: 通过QQ邮箱发送电子邮件

作者头像
Exploring
发布于 2022-09-20 05:55:32
发布于 2022-09-20 05:55:32
3.7K00
代码可运行
举报
运行总次数:0
代码可运行

文章背景:自学Python编程快速上手中关于发送电子邮件的章节。本文讲述如何通过Python,使用QQ邮箱发送电子邮件。

  1. 连接到SMTP服务器 import smtplib smtpObj = smtplib.SMTP('smtp.qq.com',587)
  1. 发送SMTP的“Hello”消息 smtpObj.ehlo()
  2. 开始TLS加密 smtpObj.starttls()
  3. 登陆到SMTP服务器 smtpObj.login('my_email_address@qq.com','MY_SECRET_PASSWORD') 对于MY_SECRET_PASSWORD,针对QQ邮箱,需要输入的是授权码。授权码是QQ邮箱推出的,用于登录第三方客户端的专用密码。适用于登录以下服务:POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务。 将密码放在源代码中要当心。调用input(),让用户输入密码是个好主意。
  4. 发送电子邮件
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
from email.mime.text import MIMEText
from email.header import Header
from email.utils import parseaddr, formataddr

def _format_addr(s):
    name, addr = parseaddr(s)
    return formataddr((Header(name, 'utf-8').encode(), addr))

from_addr = 'my_email_address@qq.com'          # 发件人
to_addr = 'recipient@example.com'              # 收件人

message = MIMEText('Happy new year!', 'plain', 'utf-8')         # 正文
message['From'] = _format_addr('Sam <%s>' % from_addr)          # 发件人
message['To'] =  _format_addr('Python lover <%s>' % to_addr)    # 收件人

subject = 'Python SMTP 邮件测试'
message['Subject'] = Header(subject, 'utf-8')    #主题

smtpObj.sendmail(from_addr, [to_addr], message.as_string())
  • 邮件主题、如何显示发件人、收件人等信息并不是通过SMTP协议发送出去,而是包含在发给message的文本中。所以,我们必须把FromToSubject添加到MIMEText中,才是一封完整的邮件。
  • 函数_format_addr()用来格式化一个邮件地址;如果包含中文,需要通过Header对象进行编码。
  • message['To']接收的是字符串而不是list,如果有多个邮件地址,用,分隔即可。
  • sendmail()方法就是发邮件,由于可以一次发给多个人,所以传入一个list,邮件正文是一个stras_string()MIMEText对象变成str
  1. 从SMTP服务器断开
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
smtpObj.quit()

代码汇总

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import smtplib
from email.mime.text import MIMEText
from email.header import Header
from email.utils import parseaddr, formataddr

def _format_addr(s):
    name, addr = parseaddr(s)
    return formataddr((Header(name, 'utf-8').encode(), addr))

# 1. 连接到SMTP服务器
smtpObj = smtplib.SMTP('smtp.qq.com',587)

# 2. 发送SMTP的“HELLO”消息
smtpObj.ehlo()

# 3. 开始TLS加密
smtpObj.starttls()

# 4. 登陆到SMTP服务器
smtpObj.login('my_email_address@qq.com','MY_SECRET_PASSWORD')

# 5. 发送电子邮件
from_addr = 'my_email_address@qq.com'          # 发件人
to_addr = 'recipient@example.com'              # 收件人

message = MIMEText('Happy new year!', 'plain', 'utf-8')         # 正文
message['From'] = _format_addr('Sam <%s>' % from_addr)          # 发件人
message['To'] =  _format_addr('Python lover <%s>' % to_addr)    # 收件人

subject = 'Python SMTP 邮件测试'
message['Subject'] = Header(subject, 'utf-8')    #主题

smtpObj.sendmail(from_addr, [to_addr], message.as_string())

# 6. 从服务器断开
smtpObj.quit()

print("Done!")

运行代码后,打开收件箱,效果如下:

参考资料:

[1] Python编程快速上手—让繁琐工作自动化(https://ddz.red/AFTmO)

[2] QQ邮箱的POP3与SMTP服务器(https://service.mail.qq.com/cgi-bin/help?subtype=1&no=167&id=28)

[3] 授权码(https://service.mail.qq.com/cgi-bin/help?subtype=1&&id=28&&no=1001256%27)

[4] SMTP发送邮件(https://www.liaoxuefeng.com/wiki/1016959663602400/1017790702398272)

[5] Python SMTP发送邮件(https://www.runoob.com/python/python-email.html)

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-09-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 数据处理与编程实践 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
九、Python发送QQ邮件(SMTP)
看了廖雪峰老师的教程: 一封电子邮件的旅程就是 发件人 -> MUA -> MTA -> MTA -> 若干个MTA -> MDA <- MUA <- 收件人 有了上述基本概念,要编写程序来发送和接收邮件,本质上就是: 编写MUA把邮件发到MTA; 编写MUA从MDA上收邮件。 发邮件时,MUA和MTA使用的协议就是SMTP:Simple Mail Transfer Protocol,后面的MTA到另一个MTA也是用SMTP协议。 收邮件时,MUA和MDA使用的协议有两种:POP:Post Of
酱紫安
2018/04/16
2.6K0
Python爬虫系列:用邮件来通知爬虫异常状况
如果Python爬虫发生了故障,希望第一时间来通知自己,这个时候可以通过email来向自己报告。
龙哥
2018/10/22
1.1K0
Python爬虫系列:用邮件来通知爬虫异常状况
python发送邮件(二)——smtplib模块和email模块
一、模块介绍 1、smtplib 模块(用于邮件的发送) ①理论解释 smtplib.SMTP([host[, port[, local_hostname[, timeout]]]]) 通过这个语句,可以向SMTP服务器发送指令,执行相关操作(如:登陆、发送邮件)。所有的参数都是可选的。 host:smtp服务器主机名 port:smtp服务的端口,默认是25;端口号可以省略。 但是使用25号端口有一个问题,就是保密性不够好,数据都是明文传输,没有加密。 现在一般都推荐使用SSL,Secure So
Elsa_阿尼
2021/07/27
5.9K0
python发送邮件(二)——smtplib模块和email模块
Python实现自动发送邮件(详解)
这点很关键,别忘了去开启SMTP, 别忘了去开启SMTP,否则邮件是无法发送成功的 。然后你还需要点击下面生成授权码,这个授权码才是使用Python发送邮件时的真正密码。
全栈程序员站长
2022/11/17
1.2K0
Python实现自动发送邮件(详解)
python接口自动化测试(四)Email发送方法
自动化框架中会用到通过邮件发送测试报告的功能,需要用到python的email库和smtplib库
FutureTester
2021/12/30
4160
指定时间内网站访问次数的监控
需求说明: 在日常运维工作中,为了防止一些恶意访问的行为,例如不断的请求刷流量,通过实时过滤Nginx访问日志,将单位时间内访问次数达到指定阀值的来源ip查找出来,并通过邮件报警方式及时通知运维人员! 比如针对url为http://192.168.10.202:8888的访问进行监控,当在1分钟内访问次数超过300次数,就邮件报警给运维人员。 1)nginx日志监控脚本 [root@Fastdfs_storage_s1 ~]# cat /opt/nginx_log_monit.sh #!/bin/bash
洗尽了浮华
2018/03/28
1.6K0
python发送邮件案例分析
1、运用for循环,实现群发功能 接收方的昵称是统一的一个,可再优化一下,实现更加个性化,更加自由的发送邮件 from email.header import Header #处理邮件主题 from email.mime.text import MIMEText # 处理邮件内容 from email.utils import parseaddr, formataddr #用于构造特定格式的收发邮件地址 import smtplib #用于发送邮件 # 函数小工具 def _format_addr(s):
Elsa_阿尼
2021/07/28
8180
100天精通Python丨办公效率篇 —— 11、Python自动化操作 Email(发送邮件、收邮件、邮箱客户端)
首先,你要掌握以SMTP协议为基础的发送邮件方法。这个非常简单,只需要在Python中使用smtplib包,调用其中的SMTP()函数方法建立邮件连接,便可以轻松地发送邮件。
不吃西红柿
2023/04/21
1.7K0
Python3实现自动发送邮件
首先了解SMTP(简单邮件传输协议),邮件传送代理程序使用SMTP协议来发送电邮到接收者的邮件服务器。SMTP协议只能用来发送邮件,不能用来接收邮件,而大多数的邮件发送服务器都是使用SMTP协议。SMTP协议的默认TCP端口号是25。
用户9925864
2022/07/27
3820
Python3实现自动发送邮件
监控服务器ssh登录,并发送报警邮件
最近想监控下云主机的ssh登录情况,所以开始写ssh登录报警监控。实现方式并不难。
yaohong
2019/09/11
1.8K0
监控服务器ssh登录,并发送报警邮件
使用python的email、smtplib、poplib模块收发邮件
https://blog.csdn.net/weixin_35955795/article/details/52881044
用户1214487
2018/07/31
1.1K0
【Python】新闻邮件通知实现
结合之前学到的网络爬虫和发送电子邮件的知识,实现一个功能服务。本文用python代码实现,从某新闻网站爬取一个头条新闻,提取标题和url链接,然后把这些信息整合发送到指定邮箱上。
公众号---人生代码
2019/07/24
6740
教你用Python自动发送和收取邮件的方法
这篇文章主要介绍了Python自动发送和收取邮件的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着老师来一起学习学习吧
python学习教程
2020/08/31
1.7K0
教你用Python自动发送和收取邮件的方法
python之SMTP发送邮件
假设我们自己的邮件地址是myemail@163.com,对方的邮件地址是friend@qq.com,我们在网易提供的163邮箱界面编写邮件,然后发送给对方。那么,这封邮件是怎么从我方发送到对方的呢?
菲宇
2019/06/13
1.5K0
【Python实用工具】巧妙利用Python实现发送带附件的邮件
SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式。
天道Vax的时间宝藏
2021/08/11
2.5K0
python的Email提醒
from_addr定义了发送的邮箱地址,password定义了SMTP的授权码(非实际密码)
嘘、小点声
2019/07/31
1.2K0
python SMTP自动发送文本,HTML,附件邮件
1.发件人的邮件 比如:sender@163.com,sender@126.com,sender@qq.com,sender@gmal.com
用户8346838
2021/03/11
1.4K0
python发送邮件
文章目录 1. python发送邮件 1.1. 准备 1.1.1. smtplib 1.2. email 1.3. 普通文本邮件 1.4. 发送html邮件 1.5. 附件的发送 1.6. 将图片嵌入到正文信息中 python发送邮件 准备 python中发送邮件主要用的是smtplib和email两个模块,下面主要对这两个模块进行讲解 在讲解之前需要准备至少两个测试的邮箱,其中要在邮箱的设置中开启smtplib协议才可以进行发送和接受 smtplib smtplib.SMTP( [host
爱撒谎的男孩
2019/12/31
8500
python 发送text邮件 脚本
from email.header import Header from email.mime.text import MIMEText import smtplib from email.utils import parseaddr, formataddr from email import encoders
用户5760343
2022/05/13
1840
Python抓取指定微博用户最新动态
首先需要获取目标用户的oid。进入目标用户主页,按F12打开控制台,在Element页按Ctrl+F打开搜索栏,输入oid即可,然后将oid填入get_weibo.py
Naraku
2021/07/29
1.4K0
Python抓取指定微博用户最新动态
相关推荐
九、Python发送QQ邮件(SMTP)
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验