Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Python发送邮件

Python发送邮件

原创
作者头像
青阳
发布于 2021-11-26 15:30:48
发布于 2021-11-26 15:30:48
9060
举报
文章被收录于专栏:玩转云服务玩转云服务

摘要

一、介绍

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

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

Python创建 SMTP 对象语法如下:

代码语言:txt
AI代码解释
复制
import smtplib
smtpObj = smtplib.SMTP( [host [, port [, local_hostname]]] )

参数说明:

  • host: SMTP 服务器主机。 你可以指定主机的ip地址或者域名如:runoob.com,这个是可选参数。
  • port: 如果你提供了 host 参数, 你需要指定 SMTP 服务使用的端口号,一般情况下SMTP端口号为25。
  • local_hostname: 如果SMTP在你的本机上,你只需要指定服务器地址为 localhost 即可。
  • Python SMTP对象使用sendmail方法发送邮件,语法如下:
代码语言:txt
AI代码解释
复制
SMTP.sendmail(from_addr, to_addrs, msg[, mail_options, rcpt_options]

参数说明:

  • from_addr: 邮件发送者地址。
  • to_addrs: 字符串列表,邮件发送地址。
  • msg: 发送消息

这里要注意一下第三个参数,msg是字符串,表示邮件。我们知道邮件一般由标题,发信人,收件人,邮件内容,附件等构成,发送邮件的时候,要注意msg的格式。这个格式就是smtp协议中定义的格式。

二、实例
1. Python发送邮件简单的实例
代码语言:txt
AI代码解释
复制
#!/usr/bin/python3

import smtplib
from email.mime.text import MIMEText

# 第三方邮件服务器设置
mail_host = 'smtp.163.com'  # smtp服务器
mail_user = '***@163.com'   # 需要登录的邮箱账号
mail_pass = '***'           # 邮箱密码或者授权码,需要开启smtp

#内容项,下面有引用
senderOne = 'yaokun_130@163.com'     # 发件人邮箱(mail_user = 'xx@qq.com')
receiversOne = ['yaokun_130@163.com','2237553939@qq.com']  # 接收邮箱,可设置QQ邮箱或者其他邮箱
subject = 'Python SMTP 邮件发送测试'  # 邮件主题

message['Subject'] = subject              # 主题
message = MIMEText('第一封邮件发送', 'plain', 'utf-8')  # 内容
message['From'] = "{}".format(senderOne)  # 发送者
message['To'] = ",".join(receiversOne)    # 接收者

try:
    smtpObj = smtplib.SMTP_SSL(mail_host, 465)  # 启用SSL发信, 端口一般是465
    smtpObj.login(mail_user, mail_pass)         # 登录验证
    smtpObj.sendmail(senderOne, receiversOne, message.as_string())  # 发送
    print("邮件发送成功")
except smtplib.SMTPException:
    print("Error: 无法发送邮件")
2. Python发送HTML格式的邮件
代码语言:txt
AI代码解释
复制
#!/usr/bin/python3

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

# 第三方邮件服务器设置
mail_host = 'smtp.163.com'  # smtp服务器
mail_user = '***@163.com'   # 需要登录的邮箱账号
mail_pass = '***'           # 邮箱密码或者授权码,需要开启smtp

#内容项,下面有引用
sender = 'yaokun_130@163.com'  # 发件人邮箱(mail_user = 'xx@qq.com')
receivers = ['yaokun_130@163.com','2237553939@qq.com']  # 接收邮箱,可设置QQ邮箱或者其他邮箱
subject = 'Python SMTP 邮件发送测试'  #主题
mail_msg = """
<p>Python 邮件发送测试...</p>
<p><a href="https://blog.bwcxtech.com">我的博客链接</a></p>
<p>图片演示:</p>
<p><img src="cid:image1"></p>
"""
message = MIMEMultipart('related')
msgAlternative = MIMEMultipart('alternative')

msgAlternative.attach(MIMEText(mail_msg, 'html', 'utf-8'))
message['Subject'] = Header(subject, 'utf-8')
message['From'] = "{}".format(sender)
message['To'] = ",".join(receivers)
message.attach(msgAlternative)

# 指定图片
fp = open('test.jpg', 'rb')
msgImage = MIMEImage(fp.read())
fp.close()

# 定义图片 ID,在 HTML 文本中引用
msgImage.add_header('Content-ID', '<image1>')
message.attach(msgImage)

try:
    smtpObj = smtplib.SMTP_SSL(mail_host, 465)  # 启用SSL发信, 端口一般是465
    smtpObj.login(mail_user, mail_pass)         # 登录验证
    smtpObj.sendmail(sender, receivers, message.as_string())  # 发送
    print("邮件发送成功")
except smtplib.SMTPException:
    print("Error: 无法发送邮件")
3. Python发送HTML格式加图片的邮件

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748

#!/usr/bin/python3import smtplibfrom email.mime.image import MIMEImagefrom email.mime.multipart import MIMEMultipartfrom email.mime.text import MIMETextfrom email.header import Header# 第三方邮件服务器设置mail_host = 'smtp.163.com' # smtp服务器mail_user = '***@163.com' # 需要登录的邮箱账号mail_pass = '***' # 邮箱密码或者授权码,需要开启smtp#内容项,下面有引用sender = 'yaokun_130@163.com' # 发件人邮箱(mail_user = 'xx@qq.com')receivers = 'yaokun_130@163.com','2237553939@qq.com' # 接收邮箱,可设置QQ邮箱或者其他邮箱subject = 'Python SMTP 邮件发送测试' #主题mail_msg = """<p>Python 邮件发送测试...</p><p><a href="https://blog.bwcxtech.com">我的博客链接</a></p><p>图片演示:</p><p><img src="cid:image1"></p>"""message = MIMEMultipart('related')msgAlternative = MIMEMultipart('alternative')msgAlternative.attach(MIMEText(mail_msg, 'html', 'utf-8'))message'Subject' = Header(subject, 'utf-8')message'From' = "{}".format(sender)message'To' = ",".join(receivers)message.attach(msgAlternative)# 指定图片fp = open('test.jpg', 'rb')msgImage = MIMEImage(fp.read())fp.close()# 定义图片 ID,在 HTML 文本中引用msgImage.add_header('Content-ID', '<image1>')message.attach(msgImage)try: smtpObj = smtplib.SMTP_SSL(mail_host, 465) # 启用SSL发信, 端口一般是465 smtpObj.login(mail_user, mail_pass) # 登录验证 smtpObj.sendmail(sender, receivers, message.as_string()) # 发送 print("邮件发送成功")except smtplib.SMTPException: print("Error: 无法发送邮件")

4. Python发送带附件的邮件
代码语言:txt
AI代码解释
复制
#!/usr/bin/python3

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

# 第三方邮件服务器设置
mail_host = 'smtp.163.com'  # smtp服务器
mail_user = '***@163.com'   # 需要登录的邮箱账号
mail_pass = '***'           # 邮箱密码或者授权码,需要开启smtp

#内容项
sender = 'yaokun_130@163.com'           # 发件人邮箱(mail_user = 'xx@qq.com')
receivers = ['yaokun_130@163.com','2237553939@qq.com']  # 接收邮箱,可设置QQ邮箱或者其他邮箱
subject = 'Python SMTP 邮件发送测试'     #主题
message = MIMEMultipart()

message.attach(MIMEText('这是Python 邮件发送测试……', 'plain', 'utf-8'))
message['From'] = "{}".format(sender)
message['To'] = ",".join(receivers)
message['Subject'] = Header(subject, 'utf-8')

# 构造附件1,传送当前目录下的 test.txt 文件
att1 = MIMEText(open('test.txt', 'rb').read(), 'base64', 'utf-8')
att1["Content-Type"] = 'application/octet-stream'
# 这里的filename可以任意写,写什么名字,邮件中显示什么名字
att1["Content-Disposition"] = 'attachment; filename="test.txt"'
message.attach(att1)

# 构造附件2,传送当前目录下的 runoob.txt 文件
att2 = MIMEText(open('runoob.txt', 'rb').read(), 'base64', 'utf-8')
att2["Content-Type"] = 'application/octet-stream'
att2["Content-Disposition"] = 'attachment; filename="runoob.txt"'
message.attach(att2)

try:
    smtpObj = smtplib.SMTP_SSL(mail_host, 465)  # 启用SSL发信, 端口一般是465
    smtpObj.login(mail_user, mail_pass)         # 登录验证
    smtpObj.sendmail(sender, receivers, message.as_string())    # 发送
    print("邮件发送成功")
except smtplib.SMTPException:
    print("Error: 无法发送邮件")

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

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

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

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

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
python SMTP邮件发送
本例使用的时python2.7环境,python3的操作应该也是差不多的。 需要用到smtplib和email两个包。
py3study
2020/01/16
1.8K0
python邮件自动发送测试报告,看这篇文章就够了
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/100698.html原文链接:https://javaforall.cn
全栈程序员站长
2022/06/29
4900
python邮件自动发送测试报告,看这篇文章就够了
Python3实现自动发送邮件
首先了解SMTP(简单邮件传输协议),邮件传送代理程序使用SMTP协议来发送电邮到接收者的邮件服务器。SMTP协议只能用来发送邮件,不能用来接收邮件,而大多数的邮件发送服务器都是使用SMTP协议。SMTP协议的默认TCP端口号是25。
用户9925864
2022/07/27
3310
Python3实现自动发送邮件
Python发送邮件
Python发邮件需要有SMTP服务,可以在本地搭建SMTP服务,也可以使用第三方的SMTP服务(比如网易邮箱或QQ邮箱)。 这里我使用了网易126邮箱来发邮件。
海天一树
2018/07/25
1.5K0
Python发送邮件
用python发送邮件
SMTP是发送邮件的协议,Python内置对SMTP的支持,可以发送纯文本邮件、HTML邮件以及带附件的邮件。Python对SMTP支持有smtplib和email两个模块,email负责构造邮件,smtplib负责发送邮件。
用户6021899
2021/03/11
3230
用python发送邮件
【测试开发】python系列教程:smtplib库
SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式。
雷子
2023/08/21
2810
【测试开发】python系列教程:smtplib库
简单三步,用 Python 发邮件
0. 前言 发送电子邮件是个很常见的开发需求。比如你写了个监控天气的脚本,发现第二天要下雨,或者网站上关注的某个商品降价了,就可以发个邮件到邮箱来提醒自己。 使用 Python 脚本发送邮件并不复杂。不过在网页上搜了些教程,都亲测无效,发现或多或少有点问题,导致发送失败。所以今天我们就来讲讲如何使用 Python 发送邮件。 本文主要内容包括,了解发邮件的思路,发送邮件需要的一些设置,发送一封简单的邮件,发送一封包含附件的邮件,在写代码过程中我们需要注意哪些问题等等。(完整参考代码地址见文末) 1. 思
Crossin先生
2018/04/17
1.2K0
简单三步,用 Python 发邮件
python 使用stmp发送邮件
SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式。
py3study
2020/01/06
1.1K0
Python发送文本邮件
在运行机器学习等需要大量计算的程序时,可以在报错或者程序运行完成时,发送邮件提醒。
Michael阿明
2021/02/19
5670
Python发送邮件的例子
import smtplib from email.mime.text import MIMEText from email.header import Header # 第三方 SMTP 服务 mail_host="smtp.qq.com" #设置服务器 mail_user="12121212@qq.com" #用户名 mail_pass="1223333" #口令 sender = '121212@qq.com' receivers = ['xi121@qq.com'] # 接收邮件
py3study
2020/01/15
4800
python发送邮件源码
这是之前一个公司的面试题中的一小部分。比较习惯把这中工具性的东西单独的写成一个函数,这样以后再用到,直接拿来就好。
the5fire
2019/02/28
6840
python发送、抄送邮件
python发送抄送邮件 sendemial.py #!/usr/bin/python # -*- coding: UTF-8 -*- import smtplib from email.mime.text import MIMEText from email.header import Header from email.mime.multipart import MIMEMultipart import time import os mail_host="smtp.miao.cn" mail_u
py3study
2020/01/08
1K0
python3 SMTP发送邮件
最近看了一个资料关于用python来实现SMTP发送邮件,觉得挺有意思就实践了一下。先简单介绍一下吧
行云博客
2022/05/10
6250
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
5360
【Python实用工具】巧妙利用Python实现发送带附件的邮件
SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式。
天道Vax的时间宝藏
2021/08/11
2.5K0
接口测试基础——第2篇smtplib发送文字邮件
王者荣耀真害人!这就是昨天没发的原因…… 我先给大家补充一个用QQ发送纯文本电子邮件的代码,用QQ的朋友可以参考一下: # coding=utf-8 import smtplib from email.mime.text import MIMEText mail_host = “smtp.qq.com” receivers = “123@qq.com” sender = “456@qq.com” passwd = ‘QQ邮箱的授权码’ contents = “python发送邮件” # 构造邮件正文 ms
孟船长
2018/05/18
7450
Python 发邮件
普通邮件 [root@localhost checksalt]# cat python_email.py  #!/usr/bin/python # -*- coding: utf-8 -*- import sys def smtp(title,file):     import smtplib     from email.mime.text import MIMEText     from email.header import Header           with open(file, 'r') 
py3study
2020/01/15
1.7K0
使用Python调用SMTP服务自动发送Email
假设我们想设计一个定时任务,比如每天定时的用python来测试服务是否在正常运行,但是又不希望每天登录到系统后台去查看服务状态。这里我们就可以采取python的smtp模块进行任务结果广播,申请一个公共邮箱,每次python执行完定时的测试任务后,调用smtp的接口将测试结果广播给需要接收的人的邮箱中。这就使得,我们可以在移动端就能按照我们的意愿实时监测系统的状态。
DechinPhy
2021/05/21
9010
python3实现邮件的发送
使用的email和smtplib模块,这里简单介绍下smtplib.SMTP()类
dogfei
2020/07/31
3770
[Python] Python发送邮件(文本邮件发送)
直接上代码吧 然后采用者直接写好自己的信息就可以运行啦 import smtplib from email.mime.text import MIMEText from email.header import Header mail_host = "smtp.qq.com" #邮箱服务器(这里采用的是QQ的) mail_user = "******@qq.com" #发送者的邮箱地址 mail_pass
Michael阿明
2021/02/19
2.5K0
相关推荐
python SMTP邮件发送
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档