前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >python使用smtplib和MIMEText发送邮件

python使用smtplib和MIMEText发送邮件

作者头像
晓歌
发布于 2018-10-11 06:59:19
发布于 2018-10-11 06:59:19
5.2K00
代码可运行
举报
文章被收录于专栏:破晓之歌破晓之歌
运行总次数:0
代码可运行

本章以qq为例,使用前先在邮箱-设置-账户-开通POP3/SMTP服务,需要发送手机验证码,返回一个授权码

代码

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import smtplib
from email.mime.text import MIMEText
def sendmail(subject, content):
    email_host = 'smtp.qq.com'     # 发送者是qq邮箱
    email_user = '你填写授权码的qq邮箱@qq.com'  # 发送者账号
    email_pwd = '你的授权码'       # 发送者密码
    maillist ='你的接受者账号@qq.com'    # 接收者账号,本来想写成[]list的,但是报错,还没解决!
    me = email_user

    msg = MIMEText(content, 'html', 'utf-8')    # 邮件内容,三个参数:第一个为文本内容,第二个 html 设置文本格式,第三个 utf-8 设置编码
    msg['Subject'] = subject    # 邮件主题
    msg['From'] = me    # 发送者账号
    msg['To'] = maillist    # 接收者账号列表(列表没实现)

    smtp = smtplib.SMTP(email_host) # 如上变量定义的,是qq邮箱
    smtp.login(email_user, email_pwd)   # 发送者的邮箱账号,密码
    smtp.sendmail(me, maillist, msg.as_string())    # 参数分别是发送者,接收者,第三个不知道
    smtp.quit() # 发送完毕后退出smtp
    print ('email send success.')

sendmail('主题', '内容')    # 调用发送邮箱的函数

demo1.py

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# smtp =>simple mail transfer protocol  简单邮件传输协议
import smtplib
import email  # 文件名不可以和引入的库同名
from email.mime.image import MIMEImage  # 图片类型邮件
from email.mime.text import MIMEText  # MIME 多用于邮件扩充协议
from email.mime.multipart import MIMEMultipart  # 创建附件类型

HOST = 'smtp.qq.com'  # 调用的邮箱借借口
SUBJECT = '发送了一封测试邮件'  # 设置邮件标题
FROM = '你的授权码邮箱@qq.com'  # 发件人的邮箱需先设置开启smtp协议
TO = '发送者qq邮箱@qq.com'  # 设置收件人的邮箱(可以一次发给多个人,用逗号分隔)
message = MIMEMultipart('related')  # 邮件信息,内容为空  #相当于信封##related表示使用内嵌资源的形式,将邮件发送给对方

def sendmail(HOST, SUBJECT,FROM,TO,message):
    """
    发送邮件主体到对方邮箱
    :发送信息参数说明:
    1.内容必须是字符串
    2.内容形式,文本类型默认为plain
    3.内容编码使用utf-8
    :其他:
    图片和excel文件需要和本脚本一个目录下
    """

    # ===========发送信息内容=============
    # message_html = MIMEText('shuai123 消灭不开行', 'plain', 'utf-8')
    message_html = MIMEText('<h1 style="color:red;font-size:100px">测试信息已收到</h1><img src="cid:small">', 'html', 'utf-8')
    message.attach(message_html)

    # ===========发送图片-=============
    #发送图片-预览信息
    image_data = open('email_demo.jpg', 'rb')
    message_image = MIMEImage(image_data.read())
    image_data.close()# 关闭刚才打开的文件
    message_image.add_header('Content-ID', 'small')
    message.attach(message_image)# 添加图片文件到邮件信息中去
    #发送图片-附件
    message_image = MIMEText(open('email_demo.jpg', 'rb').read(), 'base64', 'utf-8')
    message_image['Content-disposition'] = 'attachment;filename="email_demo_change.jpg"'# 设置图片在附件当中的名字
    message.attach(message_image)# 添加图片文件到邮件-附件中去
    # ===========发送excel-附件=============
    message_xlsx = MIMEText(open('email_demo.xlsx', 'rb').read(), 'base64', 'utf-8')# 将xlsx文件作为内容发送到对方的邮箱读取excel,rb形式读取,对于MIMEText()来说默认的编码形式是base64 对于二进制文件来说没有设置base64,会出现乱码
    message_xlsx['Content-Disposition'] = 'attachment;filename="email_demo_change.xlsx"'# 设置文件在附件当中的名字
    message.attach(message_xlsx)# 添加excel文件到邮件-附件中去

    # ===========配置相关-=============
    message['From'] = FROM # 设置邮件发件人
    message['TO'] = TO # 设置邮件收件人
    message['Subject'] = SUBJECT # 设置邮件标题
    email_client = smtplib.SMTP_SSL()# 获取江建有奖传输协议证书
    email_client.connect(HOST, '465')# 设置发送域名,端口465
    result = email_client.login(FROM, '你的QQ授权码')  # qq授权码
    print('登录结果', result)

    # ===========操作=============
    email_client.sendmail(from_addr=FROM, to_addrs=TO.split(','), msg=message.as_string()) #发送邮件指令
    email_client.close()# 关闭邮件发送客户端

if __name__ == '__main__':
    sendmail(HOST=HOST, SUBJECT=SUBJECT,FROM=FROM,TO=TO,message=message)

demo2.py

参考文档

1.使用Python来操作邮箱:https://blog.csdn.net/qq_38059635/article/details/81569081

2.python3 发邮件 smtplib & email 库:https://www.cnblogs.com/vivivi/p/5952093.html

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

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

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

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Python实现自动发送邮件(详解)
这点很关键,别忘了去开启SMTP, 别忘了去开启SMTP,否则邮件是无法发送成功的 。然后你还需要点击下面生成授权码,这个授权码才是使用Python发送邮件时的真正密码。
全栈程序员站长
2022/11/17
1.1K0
Python实现自动发送邮件(详解)
Python 技术篇-邮件发送并展示本地图片
qq账号发送邮箱登陆密码需要用授权码。 可以看我的这个文章: Python 技术篇-qq邮箱授权码开通
小蓝枣
2020/09/23
1.2K0
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.3K0
python发送邮件(二)——smtplib模块和email模块
Python 技术篇-用smtplib和email库实现邮件发送各种类型的附件实例演示
qq 账号发送邮箱登陆密码需要用授权码。 可以看我的这个文章: Python 技术篇-qq邮箱授权码开通
小蓝枣
2022/05/07
660
Python 技术篇-用smtplib和email库实现邮件发送各种类型的附件实例演示
python 使用stmp发送邮件
SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式。
py3study
2020/01/06
1.1K0
使用python自动化发送邮件
smtplib模块是对SMTP协议的封装,用于发送邮件;email模块用于构建邮件内容,支持以下3种形式的邮件
生信修炼手册
2020/12/11
7730
使用python自动化发送邮件
python发送邮件
为了更好的理解邮件发送功能的实现,要先了解邮件发送系统的大致流程。首先  电子邮件之间的相互发送接受就像  邮局邮件发送一样,从一个站点(邮件发送服务器)到目的地站点(邮件接收服务器),然后目的地站点处理收到的邮件,并发送给接受人。每个邮件服务器即担任发送也担任接受邮件,并且每个服务器地址,端口号,配置等也不同。
用户1558882
2019/01/30
7670
python技能之发送邮件
python中发送邮件主要使用的库是 smtplib 安装命令也比较简单; pip install smtplib 编码实现发送邮件: 1、引入库: import smtplib from email.mime.text import MIMEText from email.utils import formataddr 2、定义发送函数;接收主题和内容参数 def mail(subject,text): #self.my_sender='**@163.com' # 发件人邮箱账号
JQ实验室
2022/05/06
4340
Python3实现自动发送邮件
首先了解SMTP(简单邮件传输协议),邮件传送代理程序使用SMTP协议来发送电邮到接收者的邮件服务器。SMTP协议只能用来发送邮件,不能用来接收邮件,而大多数的邮件发送服务器都是使用SMTP协议。SMTP协议的默认TCP端口号是25。
用户9925864
2022/07/27
3370
Python3实现自动发送邮件
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
8000
python邮件自动发送测试报告,看这篇文章就够了
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/100698.html原文链接:https://javaforall.cn
全栈程序员站长
2022/06/29
4940
python邮件自动发送测试报告,看这篇文章就够了
使用Python内置的smtplib包和email包来实现邮件的构造和发送。
一些邮箱登录比如 QQ 邮箱需要 SSL 认证,所以 SMTP 已经不能满足要求,而需要SMTP_SSL,解决办法为:
GhostCN_Z
2020/04/03
1.3K0
python3 SMTP发送邮件
最近看了一个资料关于用python来实现SMTP发送邮件,觉得挺有意思就实践了一下。先简单介绍一下吧
行云博客
2022/05/10
6350
python SMTP邮件发送
本例使用的时python2.7环境,python3的操作应该也是差不多的。 需要用到smtplib和email两个包。
py3study
2020/01/16
1.9K0
干货 | 解放双手,用Python实现自动发送邮件
使用Python实现自动化邮件发送,可以让你摆脱繁琐的重复性业务,节省非常多的时间。 Python有两个内置库:smtplib和email,能够实现邮件功能,smtplib库负责发送邮件,email库负责构造邮件格式和内容。 邮件发送需要遵守SMTP协议,Python内置对SMTP的支持,可以发送纯文本邮件、HTML邮件以及带附件的邮件。 1、先导入相关的库和方法
派大星的数据屋
2022/04/02
1.9K0
干货 | 解放双手,用Python实现自动发送邮件
Python发送邮件
Python发邮件需要有SMTP服务,可以在本地搭建SMTP服务,也可以使用第三方的SMTP服务(比如网易邮箱或QQ邮箱)。 这里我使用了网易126邮箱来发邮件。
海天一树
2018/07/25
1.5K0
Python发送邮件
Linux之python发送邮件
在服务器端开发时,会遇到通过邮件发送报警或结果的情形,本文对使用 python 发送附件的方法做一个总结,用到的库是 smtp 和 email 两个基础库
全栈程序员站长
2022/11/15
1.8K0
python笔记3-发送邮件(smtplib)
前言 本篇总结了QQ邮箱和163邮箱发送邮件,邮件包含html中文和附件,可以发给多个收件人,专治各种不行,总之看完这篇麻麻再也不用担心我的邮件收不到了。 以下代码兼容python2和python3,
上海-悠悠
2018/04/08
1.1K0
python笔记3-发送邮件(smtplib)
python发送邮件
一.获取邮箱授权(以QQ邮箱为例子) 点击设置>账号 开启服务:POP3/SMTP服务 选择开启 然后获取授权码xxx 二.发送文本 import smtplib from email.mime.text import MIMEText subject = "标题" # 邮件的主题 content = '测试' #内容 sender = "568972484@qq.com" # 发件人 password = 'xxx' # 刚才我们在QQ邮箱里设置的授权密码 receiver = "5689
小小咸鱼YwY
2020/06/19
5410
Python定时发送邮件
首先我们先申请一个邮箱的授权码用于邮箱身份验证。然后编写Python程序,利用SMTP发送邮件。最后利用Windows任务计划程序实现每天定时执行程序。
一只大鸽子
2022/12/06
9480
Python定时发送邮件
相关推荐
Python实现自动发送邮件(详解)
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验