300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > PYTHON实现自动发送邮件(QQ 163 139三种邮箱演示)

PYTHON实现自动发送邮件(QQ 163 139三种邮箱演示)

时间:2020-06-06 09:14:36

相关推荐

PYTHON实现自动发送邮件(QQ 163 139三种邮箱演示)

测试文件与代码结构

一, QQ邮箱发送邮件

大致步骤

1.登录qq邮箱,选择设置

2.点击账户,进入设置界面

3.授权,生成授权码

4.编写发送代码,密码使用的是授权生成的代码(保证发送邮箱的SMTP功能是开启的)

5.效果展示

发送代码

1.发送纯文本/带有html数据的邮件

print("*************qq邮箱形式*****************")# 授权码: ***# 接收邮件服务器:,使用SSL,端口号993# 发送邮件服务器:,使用SSL,端口号465或587#!/usr/bin/python# -*- coding: UTF-8 -*-import smtplibfrom email.mime.text import MIMETextfrom email.utils import formataddrmy_sender='1751122189@' # 发件人邮箱账号my_pass = '***' # 发件人邮箱密码my_user='songjianguohp@'# 收件人邮箱账号,我这边发送给自己mail_msg = """<p>Python 邮件发送测试...</p><p><a href="">这是一个链接</a></p>"""def mail():ret=Truetry:# msg=MIMEText('填写邮件内容','plain','utf-8')#此处为仅填写文本数据msg=MIMEText(mail_msg,'html','utf-8')#需要发送html数据的时候用这种形式msg['From']=formataddr(["FromRunoob",my_sender]) # 括号里的对应发件人邮箱昵称、发件人邮箱账号msg['To']=formataddr(["FK",my_user]) # 括号里的对应收件人邮箱昵称、收件人邮箱账号msg['Subject']="菜鸟教程发送邮件测试"# 邮件的主题,也可以说是标题server=smtplib.SMTP_SSL("", 465) # 发件人邮箱中的SMTP服务器,端口是25server.login(my_sender, my_pass) # 括号中对应的是发件人邮箱账号、邮箱密码server.sendmail(my_sender,[my_user,],msg.as_string()) # 括号中对应的是发件人邮箱账号、收件人邮箱账号、发送邮件server.quit() # 关闭连接except Exception: # 如果 try 中的语句没有执行,则会执行下面的 ret=Falseret=Falsereturn retret=mail()if ret:print("邮件发送成功")else:print("邮件发送失败")

2.发送带有附件的邮件

print("*************qq邮箱带附件形式*****************")# 授权码: ***# 接收邮件服务器:,使用SSL,端口号993# 发送邮件服务器:,使用SSL,端口号465或587#!/usr/bin/python# -*- coding: UTF-8 -*-import smtplibfrom email.mime.text import MIMETextfrom email.mime.multipart import MIMEMultipartfrom email.mime.application import MIMEApplicationfrom email.utils import formataddrmy_sender='1751122189@' # 发件人邮箱账号my_pass = '***' # 发件人邮箱密码my_user='songjianguohp@'# 收件人邮箱账号,我这边发送给自己def mail():ret=Truetry:#创建一个带附件的实例msg = MIMEMultipart()msg['From'] = formataddr(["FromRunoob",my_sender]) # 括号里的对应发件人邮箱昵称、发件人邮箱账号msg['To'] = formataddr(["FK",my_user]) # 括号里的对应收件人邮箱昵称、收件人邮箱账号msg['Subject'] = 'Python SMTP 邮件测试' # 邮件的主题,也可以说是标题#邮件正文内容msg.attach(MIMEText('这是菜鸟教程Python 邮件发送测试……', 'plain', 'utf-8'))# 构造附件1,传送当前目录下的 test.txt 文件att1 = MIMEText(open('./驾驶证.jpg', 'rb').read(), 'base64', 'gb2312')#att1["Content-Type"] = 'application/octet-stream'# 这里的filename可以任意写,写什么名字,邮件中显示什么名字att1.add_header('Content-Disposition', 'attachment',filename=("驾驶证.jpg"))msg.attach(att1)# 构造附件2,传送当前目录下的 runoob.txt 文件att2 = MIMEText(open('./分公司建维部人员信息.xlsx', 'rb').read(), 'base64', 'gb2312')att2["Content-Type"] = 'application/octet-stream'att2.add_header('Content-Disposition', 'attachment',filename=("分公司建维部人员信息.xlsx"))msg.attach(att2)server=smtplib.SMTP_SSL("", 465) # 发件人邮箱中的SMTP服务器,端口是25server.login(my_sender, my_pass) # 括号中对应的是发件人邮箱账号、邮箱密码server.sendmail(my_sender,[my_user,],msg.as_string()) # 括号中对应的是发件人邮箱账号、收件人邮箱账号(如果需要多发就把上面的接受改成数组,这里不用加中括号了)、发送邮件server.quit() # 关闭连接except Exception as e: # 如果 try 中的语句没有执行,则会执行下面的 ret=Falseprint(e)ret=Falsereturn retret=mail()if ret:print("邮件发送成功")else:print("邮件发送失败")

二, 163邮箱发送邮件

大致步骤

1.登录163邮箱,选择POP3/SMTP/IMAP

2.进入设置页面,开启对应功能,获取到授权密码及发送邮箱服务器网址

服务器网址如下

4.编写发送代码,密码使用的是授权生成的代码(保证发送邮箱的SMTP功能是开启的)

5.效果展示

发送代码

1.发送纯文本/带有html数据的邮件

print("*************163邮箱形式*****************")# 授权码: ****# 接收邮件服务器:,使用SSL,端口号993# 发送邮件服务器:,使用SSL,端口号465或994#!/usr/bin/python# -*- coding: UTF-8 -*-import smtplibfrom email.mime.text import MIMETextfrom email.utils import formataddrmy_sender='songjianguohp@' # 发件人邮箱账号my_pass = '****' # 发件人邮箱密码my_user='songjianguohp@'# 收件人邮箱账号,我这边发送给自己mail_msg = """<p>Python 邮件发送测试...</p><p><a href="">这是一个链接</a></p>"""def mail():ret=Truetry:# msg=MIMEText('填写邮件内容','plain','utf-8')#此处为仅填写文本数据msg=MIMEText(mail_msg,'html','utf-8')#需要发送html数据的时候用这种形式msg['From']=formataddr(["FromRunoob",my_sender]) # 括号里的对应发件人邮箱昵称、发件人邮箱账号msg['To']=formataddr(["FK",my_user]) # 括号里的对应收件人邮箱昵称、收件人邮箱账号msg['Subject']="菜鸟教程发送邮件测试"# 邮件的主题,也可以说是标题server=smtplib.SMTP_SSL("", 465) # 发件人邮箱中的SMTP服务器server.login(my_sender, my_pass) # 括号中对应的是发件人邮箱账号、邮箱密码server.sendmail(my_sender,[my_user,],msg.as_string()) # 括号中对应的是发件人邮箱账号、收件人邮箱账号、发送邮件server.quit() # 关闭连接except Exception: # 如果 try 中的语句没有执行,则会执行下面的 ret=Falseret=Falsereturn retret=mail()if ret:print("邮件发送成功")else:print("邮件发送失败")

2.发送带有附件的邮件

print("*************163邮箱带附件形式*****************")# 授权码: ****# 接收邮件服务器:,使用SSL,端口号993# 发送邮件服务器:,使用SSL,端口号465或994#!/usr/bin/python# -*- coding: UTF-8 -*-import smtplibfrom email.mime.text import MIMETextfrom email.mime.multipart import MIMEMultipartfrom email.mime.application import MIMEApplicationfrom email.utils import formataddrmy_sender='songjianguohp@' # 发件人邮箱账号my_pass = '***' # 发件人邮箱密码my_user='songjianguohp@'# 收件人邮箱账号,我这边发送给自己def mail():ret=Truetry:#创建一个带附件的实例msg = MIMEMultipart()msg['From'] = formataddr(["FromRunoob",my_sender]) # 括号里的对应发件人邮箱昵称、发件人邮箱账号msg['To'] = formataddr(["FK",my_user]) # 括号里的对应收件人邮箱昵称、收件人邮箱账号msg['Subject'] = 'Python SMTP 邮件测试' # 邮件的主题,也可以说是标题#邮件正文内容msg.attach(MIMEText('这是菜鸟教程Python 邮件发送测试……', 'plain', 'utf-8'))# 构造附件1,传送当前目录下的 test.txt 文件att1 = MIMEText(open('./驾驶证.jpg', 'rb').read(), 'base64', 'gb2312')#att1["Content-Type"] = 'application/octet-stream'# 这里的filename可以任意写,写什么名字,邮件中显示什么名字att1.add_header('Content-Disposition', 'attachment',filename=("驾驶证.jpg"))msg.attach(att1)# 构造附件2,传送当前目录下的 runoob.txt 文件att2 = MIMEText(open('./分公司建维部人员信息.xlsx', 'rb').read(), 'base64', 'gb2312')att2["Content-Type"] = 'application/octet-stream'att2.add_header('Content-Disposition', 'attachment',filename=("分公司建维部人员信息.xlsx"))msg.attach(att2)server=smtplib.SMTP_SSL("", 465) # 发件人邮箱中的SMTP服务器server.login(my_sender, my_pass) # 括号中对应的是发件人邮箱账号、邮箱密码server.sendmail(my_sender,[my_user,],msg.as_string()) # 括号中对应的是发件人邮箱账号、收件人邮箱账号(如果需要多发就把上面的接受改成数组,这里不用加中括号了)、发送邮件server.quit() # 关闭连接except Exception as e: # 如果 try 中的语句没有执行,则会执行下面的 ret=Falseprint(e)ret=Falsereturn retret=mail()if ret:print("邮件发送成功")else:print("邮件发送失败")

三, 139邮箱发送邮件

大致步骤

1.进入139邮箱界面,点击设置,进入常规设置

2.进入左侧账户安全找到邮箱协议设置,开启功能,记住发送方邮箱服务器网址。授权密码为用户登录密码–此处与其他两种邮箱不同

发送代码

1.发送纯文本/带有html数据的邮件(经过测试仅能发送文本形式,当发送html给163邮箱的时候会被当成垃圾邮箱退回,请老爷们自行测试)

print("*************139邮箱形式*****************")# 授权码: ***# 接收邮件服务器:,使用SSL,端口号993# 发送邮件服务器:,使用SSL,端口号465#!/usr/bin/python# -*- coding: UTF-8 -*-import smtplibfrom email.mime.text import MIMETextfrom email.utils import formataddrmy_sender='18306462619@' # 发件人邮箱账号my_pass = '***' # 发件人邮箱密码(139邮箱密码不需要授权,就是自己的登录密码)my_user='songjianguohp@'# 收件人邮箱账号,我这边发送给自己mail_msg = """<p>Python 邮件发送测试...</p><p><a href="">这是一个链接</a></p>"""def mail():ret=Truetry:msg=MIMEText('填写邮件内容','plain','utf-8')#此处为仅填写文本数据# msg=MIMEText(mail_msg,'html','utf-8')#需要发送html数据的时候用这种形式(139邮箱不能用,会被当成垃圾邮件退回)msg['From']=formataddr(["FromRunoob",my_sender]) # 括号里的对应发件人邮箱昵称、发件人邮箱账号msg['To']=formataddr(["FK",my_user]) # 括号里的对应收件人邮箱昵称、收件人邮箱账号msg['Subject']="菜鸟教程发送邮件测试"# 邮件的主题,也可以说是标题server=smtplib.SMTP_SSL("", 465) # 发件人邮箱中的SMTP服务器server.login(my_sender, my_pass) # 括号中对应的是发件人邮箱账号、邮箱密码server.sendmail(my_sender,[my_user,],msg.as_string()) # 括号中对应的是发件人邮箱账号、收件人邮箱账号、发送邮件server.quit() # 关闭连接except Exception as e: # 如果 try 中的语句没有执行,则会执行下面的 ret=Falseprint(e)ret=Falsereturn retret=mail()if ret:print("邮件发送成功")else:print("邮件发送失败")

当发送带有html的邮件时解决方法:那就发送文本网址就好啦~~~自己复制一下好像也不是很麻烦,哈哈。

2.发送带有附件的邮件(原理同上,仅注意修改邮箱服务器和授权密码即可)

print("*************139邮箱带附件形式*****************")# 授权码: ***# 接收邮件服务器:,使用SSL,端口号993# 发送邮件服务器:,使用SSL,端口号465#!/usr/bin/python# -*- coding: UTF-8 -*-import smtplibfrom email.mime.text import MIMETextfrom email.mime.multipart import MIMEMultipartfrom email.mime.application import MIMEApplicationfrom email.utils import formataddrmy_sender='18306462619@' # 发件人邮箱账号my_pass = '***' # 发件人邮箱密码my_user='songjianguohp@'# 收件人邮箱账号,我这边发送给自己def mail():ret=Truetry:#创建一个带附件的实例msg = MIMEMultipart()msg['From'] = formataddr(["FromRunoob",my_sender]) # 括号里的对应发件人邮箱昵称、发件人邮箱账号msg['To'] = formataddr(["FK",my_user]) # 括号里的对应收件人邮箱昵称、收件人邮箱账号msg['Subject'] = 'Python SMTP 邮件测试' # 邮件的主题,也可以说是标题#邮件正文内容msg.attach(MIMEText('这是菜鸟教程Python 邮件发送测试……', 'plain', 'utf-8'))# 构造附件1,传送当前目录下的 test.txt 文件att1 = MIMEText(open('./驾驶证.jpg', 'rb').read(), 'base64', 'gb2312')#att1["Content-Type"] = 'application/octet-stream'# 这里的filename可以任意写,写什么名字,邮件中显示什么名字att1.add_header('Content-Disposition', 'attachment',filename=("驾驶证.jpg"))msg.attach(att1)# 构造附件2,传送当前目录下的 runoob.txt 文件att2 = MIMEText(open('./分公司建维部人员信息.xlsx', 'rb').read(), 'base64', 'gb2312')att2["Content-Type"] = 'application/octet-stream'att2.add_header('Content-Disposition', 'attachment',filename=("分公司建维部人员信息.xlsx"))msg.attach(att2)server=smtplib.SMTP_SSL("", 465) # 发件人邮箱中的SMTP服务器server.login(my_sender, my_pass) # 括号中对应的是发件人邮箱账号、邮箱密码server.sendmail(my_sender,[my_user,],msg.as_string()) # 括号中对应的是发件人邮箱账号、收件人邮箱账号(如果需要多发就把上面的接受改成数组,这里不用加中括号了)、发送邮件server.quit() # 关闭连接except Exception as e: # 如果 try 中的语句没有执行,则会执行下面的 ret=Falseprint(e)ret=Falsereturn retret=mail()if ret:print("邮件发送成功")else:print("邮件发送失败")

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