IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> PYTHON实现自动发送邮件(QQ,163,139三种邮箱演示) -> 正文阅读

[网络协议]PYTHON实现自动发送邮件(QQ,163,139三种邮箱演示)

测试文件与代码结构

在这里插入图片描述

一, QQ邮箱发送邮件

大致步骤

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

在这里插入图片描述

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

在这里插入图片描述

3.授权,生成授权码

在这里插入图片描述
在这里插入图片描述

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

5.效果展示

在这里插入图片描述

发送代码

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

print("*************qq邮箱形式*****************")
# 授权码: ***
# 接收邮件服务器:imap.qq.com,使用SSL,端口号993
# 发送邮件服务器:smtp.qq.com,使用SSL,端口号465587

#!/usr/bin/python
# -*- coding: UTF-8 -*-
 
import smtplib
from email.mime.text import MIMEText
from email.utils import formataddr
 
my_sender='1751122189@qq.com'    # 发件人邮箱账号
my_pass = '***'              # 发件人邮箱密码
my_user='songjianguohp@163.com'      # 收件人邮箱账号,我这边发送给自己


mail_msg = """
<p>Python 邮件发送测试...</p>
<p><a href="http://www.runoob.com">这是一个链接</a></p>
"""

def mail():
    ret=True
    try:
        # 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("smtp.qq.com", 465)  # 发件人邮箱中的SMTP服务器,端口是25
        server.login(my_sender, my_pass)  # 括号中对应的是发件人邮箱账号、邮箱密码
        server.sendmail(my_sender,[my_user,],msg.as_string())  # 括号中对应的是发件人邮箱账号、收件人邮箱账号、发送邮件
        server.quit()  # 关闭连接
    except Exception:  # 如果 try 中的语句没有执行,则会执行下面的 ret=False
        ret=False
    return ret
 
ret=mail()
if ret:
    print("邮件发送成功")
else:
    print("邮件发送失败")

2.发送带有附件的邮件

print("*************qq邮箱带附件形式*****************")
# 授权码: ***
# 接收邮件服务器:imap.qq.com,使用SSL,端口号993
# 发送邮件服务器:smtp.qq.com,使用SSL,端口号465587

#!/usr/bin/python
# -*- coding: UTF-8 -*-
 
import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from email.mime.application import MIMEApplication
from email.utils import formataddr
 
my_sender='1751122189@qq.com'    # 发件人邮箱账号
my_pass = '***'              # 发件人邮箱密码
my_user='songjianguohp@163.com'      # 收件人邮箱账号,我这边发送给自己
def mail():
    ret=True
    try:

        #创建一个带附件的实例
        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("smtp.qq.com", 465)  # 发件人邮箱中的SMTP服务器,端口是25
        server.login(my_sender, my_pass)  # 括号中对应的是发件人邮箱账号、邮箱密码
        server.sendmail(my_sender,[my_user,],msg.as_string())  # 括号中对应的是发件人邮箱账号、收件人邮箱账号(如果需要多发就把上面的接受改成数组,这里不用加中括号了)、发送邮件
        server.quit()  # 关闭连接
    except Exception as e:  # 如果 try 中的语句没有执行,则会执行下面的 ret=False
        print(e)
        ret=False
    return ret
 
ret=mail()
if ret:
    print("邮件发送成功")
else:
    print("邮件发送失败")

二, 163邮箱发送邮件

大致步骤

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

在这里插入图片描述

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

在这里插入图片描述

  • 服务器网址如下
    在这里插入图片描述

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

5.效果展示

在这里插入图片描述

发送代码

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

print("*************163邮箱形式*****************")
# 授权码: ****
# 接收邮件服务器:imap.163.com,使用SSL,端口号993
# 发送邮件服务器:smtp.163.com,使用SSL,端口号465994


#!/usr/bin/python
# -*- coding: UTF-8 -*-
 
import smtplib
from email.mime.text import MIMEText
from email.utils import formataddr
 
my_sender='songjianguohp@163.com'    # 发件人邮箱账号
my_pass = '****'              # 发件人邮箱密码
my_user='songjianguohp@163.com'      # 收件人邮箱账号,我这边发送给自己


mail_msg = """
<p>Python 邮件发送测试...</p>
<p><a href="http://www.runoob.com">这是一个链接</a></p>
"""

def mail():
    ret=True
    try:
        # 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("smtp.163.com", 465)  # 发件人邮箱中的SMTP服务器
        server.login(my_sender, my_pass)  # 括号中对应的是发件人邮箱账号、邮箱密码
        server.sendmail(my_sender,[my_user,],msg.as_string())  # 括号中对应的是发件人邮箱账号、收件人邮箱账号、发送邮件
        server.quit()  # 关闭连接
    except Exception:  # 如果 try 中的语句没有执行,则会执行下面的 ret=False
        ret=False
    return ret
 
ret=mail()
if ret:
    print("邮件发送成功")
else:
    print("邮件发送失败")

2.发送带有附件的邮件

print("*************163邮箱带附件形式*****************")
# 授权码: ****
# 接收邮件服务器:imap.163.com,使用SSL,端口号993
# 发送邮件服务器:smtp.163.com,使用SSL,端口号465994

#!/usr/bin/python
# -*- coding: UTF-8 -*-
 
import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from email.mime.application import MIMEApplication
from email.utils import formataddr
 
my_sender='songjianguohp@163.com'    # 发件人邮箱账号
my_pass = '***'              # 发件人邮箱密码
my_user='songjianguohp@163.com'      # 收件人邮箱账号,我这边发送给自己
def mail():
    ret=True
    try:

        #创建一个带附件的实例
        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("smtp.163.com", 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=False
        print(e)
        ret=False
    return ret
 
ret=mail()
if ret:
    print("邮件发送成功")
else:
    print("邮件发送失败")

三, 139邮箱发送邮件

大致步骤

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

在这里插入图片描述

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

在这里插入图片描述
在这里插入图片描述

发送代码

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

print("*************139邮箱形式*****************")
# 授权码: ***
# 接收邮件服务器:imap.139.com,使用SSL,端口号993
# 发送邮件服务器:smtp.139.com,使用SSL,端口号465


#!/usr/bin/python
# -*- coding: UTF-8 -*-
 
import smtplib
from email.mime.text import MIMEText
from email.utils import formataddr
 
my_sender='18306462619@139.com'    # 发件人邮箱账号
my_pass = '***'              # 发件人邮箱密码(139邮箱密码不需要授权,就是自己的登录密码)
my_user='songjianguohp@163.com'      # 收件人邮箱账号,我这边发送给自己


mail_msg = """
<p>Python 邮件发送测试...</p>
<p><a href="http://www.runoob.com">这是一个链接</a></p>
"""

def mail():
    ret=True
    try:
        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("smtp.139.com", 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=False
        print(e)
        ret=False
    return ret
 
ret=mail()
if ret:
    print("邮件发送成功")
else:
    print("邮件发送失败")
  • 当发送带有html的邮件时
  • 解决方法:那就发送文本网址就好啦~~~自己复制一下好像也不是很麻烦,哈哈。

在这里插入图片描述

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

print("*************139邮箱带附件形式*****************")
# 授权码: ***
# 接收邮件服务器:imap.139.com,使用SSL,端口号993
# 发送邮件服务器:smtp.139.com,使用SSL,端口号465

#!/usr/bin/python
# -*- coding: UTF-8 -*-
 
import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from email.mime.application import MIMEApplication
from email.utils import formataddr
 
my_sender='18306462619@139.com'    # 发件人邮箱账号
my_pass = '***'              # 发件人邮箱密码
my_user='songjianguohp@163.com'      # 收件人邮箱账号,我这边发送给自己
def mail():
    ret=True
    try:

        #创建一个带附件的实例
        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("smtp.139.com", 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=False
        print(e)
        ret=False
    return ret
 
ret=mail()
if ret:
    print("邮件发送成功")
else:
    print("邮件发送失败")
  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2021-11-12 19:57:15  更:2021-11-12 19:58:48 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 5:36:22-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码