2000字范文,分享全网优秀范文,学习好帮手!
2000字范文 > python 自动发邮件模块抄送_Python实现自动发送邮件

python 自动发邮件模块抄送_Python实现自动发送邮件

时间:2023-01-21 11:40:41

相关推荐

python 自动发邮件模块抄送_Python实现自动发送邮件

一、前言

在开始正题之前,我们先理一下常见的电子邮件协议:SMTP、POP、IMAP 都遵循TCP/IP协议规范。至于Exchange是邮件服务器,不是收邮件和发邮件的协议,不要混淆概念,一般情况下不用,因为它是微软的产品。

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

POP:协议允许电子邮件客户端下载服务器上的邮件,但是在客户端的操作(如移动邮件、标记已读等),不会反馈到服务器上。属于收件协议。

IMAP:提供 邮件服务器 与电子邮件客户端之间的双向通信,客户端的操作都会反馈到服务器上,对邮件进行的操作,服务器上的邮件也会做相应的动作(这是和POP协议主要不同点)。属于 收件协议。

二、SMTP发送邮件

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

1、发送普通邮件

1)先找到你的发送邮箱,比如我这里是企业邮箱,点击邮箱“设置”—>“客户端设置”,开启 SMTP 服务器。发送服务器配置使用:smtp.(使用SSL,端口号465)

2)smtplib、email 使用如下。其中 MIMEText 构造对象时,第一个参数是邮件正文;第二个参数是subType,可以设置两种格式 'plain' 和 'html';然后一定要指定字符编码‘utf-8’。‘plain’ 表示发送纯文本消息。

from smtplib importSMTP_SSLfrom email.mime.text importMIMETextdef sendMail(message,Subject,sender_show,recipient_show,to_addrs,cc_show=''):''':param message: str 邮件内容

:param Subject: str 邮件主题描述

:param sender_show: str 发件人显示,不起实际作用如:"xxx"

:param recipient_show: str 收件人显示,不起实际作用 多个收件人用','隔开如:"xxx,xxxx"

:param to_addrs: str 实际收件人

:param cc_show: str 抄送人显示,不起实际作用,多个抄送人用','隔开如:"xxx,xxxx"'''

#填写真实的发邮件服务器用户名、密码

user = 'root'password= '123456'

#邮件内容

msg = MIMEText(message, 'plain', _charset="utf-8")#邮件主题描述

msg["Subject"] =Subject#发件人显示,不起实际作用

msg["from"] =sender_show#收件人显示,不起实际作用

msg["to"] =recipient_show#抄送人显示,不起实际作用

msg["Cc"] =cc_show

with SMTP_SSL(host="smtp.",port=465) as smtp:#登录发邮件服务器

smtp.login(user = user, password =password)#实际发送、接收邮件配置

smtp.sendmail(from_addr = user, to_addrs=to_addrs.split(','), msg=msg.as_string())if __name__ =='__main':

message= 'Python 测试邮件...'Subject= '主题测试'

#显示发送人

sender_show = 'xxx'

#显示收件人

recipient_show = 'xxx'

#实际发给的收件人

to_addrs = 'xxx@'sendMail(message,Subject,sender_show,recipient_show,to_addrs)

邮件效果:

2、发送HTML格式邮件

将 MIMEText 第二个参数设置成 'html',如:MIMEText(message,'html',_charset="utf-8")

from smtplib importSMTP_SSLfrom email.mime.text importMIMETextdef sendMail(message,Subject,sender_show,recipient_show,to_addrs,cc_show=''):''':param message: str 邮件内容

:param Subject: str 邮件主题描述

:param sender_show: str 发件人显示,不起实际作用如:"xxx"

:param recipient_show: str 收件人显示,不起实际作用 多个收件人用','隔开如:"xxx,xxxx"

:param to_addrs: str 实际收件人

:param cc_show: str 抄送人显示,不起实际作用,多个抄送人用','隔开如:"xxx,xxxx"'''

#填写真实的发邮件服务器用户名、密码

user = 'root'password= '123456'

#邮件内容

msg = MIMEText(message, 'html', _charset="utf-8")#邮件主题描述

msg["Subject"] =Subject#发件人显示,不起实际作用

msg["from"] =sender_show#收件人显示,不起实际作用

msg["to"] =recipient_show#抄送人显示,不起实际作用

msg["Cc"] =cc_show

with SMTP_SSL(host="smtp.",port=465) as smtp:#登录发送邮件服务器

smtp.login(user = user, password =password)#实际发送、接收邮件配置

smtp.sendmail(from_addr = user, to_addrs=to_addrs.split(','), msg=msg.as_string())if __name__ =='__main':

message= '''

Python 邮件发送测试...

纵里寻她千百度

'''Subject= '主题测试'

#显示发送人

sender_show = 'xxx'

#显示收件人

recipient_show = 'xxx'

#实际发给的收件人

to_addrs = 'xxx@'sendMail(message,Subject,sender_show,recipient_show,to_addrs)

邮件效果:

3、发送带附件邮件

发送带附件的邮件需借助类 MIMEMultipart(),然后构造邮件内容及附件,多个附件 attach 多次。

from smtplib importSMTP_SSLfrom email.mime.text importMIMETextfrom email.mime.multipart importMIMEMultipartdef sendMail(message,Subject,sender_show,recipient_show,to_addrs,cc_show=''):''':param message: str 邮件内容

:param Subject: str 邮件主题描述

:param sender_show: str 发件人显示,不起实际作用如:"xxx"

:param recipient_show: str 收件人显示,不起实际作用 多个收件人用','隔开如:"xxx,xxxx"

:param to_addrs: str 实际收件人

:param cc_show: str 抄送人显示,不起实际作用,多个抄送人用','隔开如:"xxx,xxxx"'''

#填写真实的发邮件服务器用户名、密码

user = 'root'password= '123456'

#邮件内容

msg =MIMEMultipart()

msg.attach(MIMEText(message,'html', _charset="utf-8"))#构造附件1,传送当前目录下的 test.txt 文件

att = MIMEText(open('test.txt', 'rb').read(), 'base64', 'utf-8')

att["Content-Type"] = 'application/octet-stream'

#这里的filename可以任意写,写什么名字,邮件中显示什么名字

att["Content-Disposition"] = 'attachment; filename="dev.txt"'msg.attach(att)#邮件主题描述

msg["Subject"] =Subject#发件人显示,不起实际作用

msg["from"] =sender_show#收件人显示,不起实际作用

msg["to"] =recipient_show#抄送人显示,不起实际作用

msg["Cc"] =cc_show

with SMTP_SSL(host="smtp.",port=465) as smtp:#登录发送邮件服务器

smtp.login(user = user, password =password)#实际发送、接收邮件配置

smtp.sendmail(from_addr = user, to_addrs=to_addrs.split(','), msg=msg.as_string())if __name__ =='__main':

message= '''

Python 邮件发送测试...

纵里寻她千百度

'''Subject= '主题测试'

#显示发送人

sender_show = 'xxx'

#显示收件人

recipient_show = 'xxx'

#实际发给的收件人

to_addrs = 'xxx@'sendMail(message,Subject,sender_show,recipient_show,to_addrs)

邮件效果:

4、发送带图片邮件

邮件带图片需要用到另一个类 MIMEImage(),多张图片 attach 多次。

from smtplib importSMTP_SSLfrom email.mime.text importMIMETextfrom email.mime.multipart importMIMEMultipartfrom email.mime.image importMIMEImagedef sendMail(message,Subject,sender_show,recipient_show,to_addrs,cc_show=''):''':param message: str 邮件内容

:param Subject: str 邮件主题描述

:param sender_show: str 发件人显示,不起实际作用如:"xxx"

:param recipient_show: str 收件人显示,不起实际作用 多个收件人用','隔开如:"xxx,xxxx"

:param to_addrs: str 实际收件人

:param cc_show: str 抄送人显示,不起实际作用,多个抄送人用','隔开如:"xxx,xxxx"'''

#填写真实的发邮件服务器用户名、密码

user = 'root'password= '123456'

#邮件内容

msg =MIMEMultipart()

msg.attach(MIMEText(message,'html', _charset="utf-8"))#邮件主题描述

msg["Subject"] =Subject#发件人显示,不起实际作用

msg["from"] =sender_show#收件人显示,不起实际作用

msg["to"] =recipient_show#抄送人显示,不起实际作用

msg["Cc"] =cc_show#指定图片为当前目录

fp = open('test.png', 'rb')

msgImage=MIMEImage(fp.read())

fp.close()#定义图片 ID,在 HTML 文本中引用

msgImage.add_header('Content-ID', '')

msg.attach(msgImage)

with SMTP_SSL(host="smtp.",port=465) as smtp:#登录发送邮件服务器

smtp.login(user = user, password =password)#实际发送、接收邮件配置

smtp.sendmail(from_addr = user, to_addrs=to_addrs.split(','), msg=msg.as_string())if __name__ =='__main':

message= '''

Python 邮件发送测试...

纵里寻她千百度

'''Subject= '主题测试'

#显示发送人

sender_show = 'xxx'

#显示收件人

recipient_show = 'xxx'

#实际发给的收件人

to_addrs = 'xxx@'sendMail(message,Subject,sender_show,recipient_show,to_addrs)

邮件效果:

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。