python使用SMTP发送qq或sina邮件

yizhihongxing

接下来我将详细讲解如何使用 Python 连接 QQ 或 SINA 邮箱的 SMTP 服务器来发送邮件,并提供两个示例。

步骤一:准备工作

在使用 Python 发送邮件之前,我们需要先开通 SMTP 远程登录授权码。

  1. QQ 邮箱:登录 QQ 邮箱,在“设置”-“账户”中开启 POP3/SMTP 服务,然后再获取授权码。

  2. SINA 邮箱:登录 SINA 邮箱,在“设置”-“基本设置”-“POP3/SMTP/IMAP”中开启 SMTP 服务,然后再获取授权码。

步骤二:引入库并设置参数

import smtplib
from email.mime.text import MIMEText
from email.header import Header

# 邮箱参数
SMTP_SERVER = 'smtp.qq.com'  # SMTP 服务器地址
SMTP_PORT = 465  # SMTP 服务器端口,QQ邮箱端口为465,SINA邮箱端口为25
MAIL_USERNAME = 'example@qq.com'  # 发件人邮箱账号
MAIL_PASSWORD = '授权码'  # 发件人邮箱授权码

# 邮件内容
FROM_ADDR = 'example@qq.com'  # 发件人邮箱地址
TO_ADDR = 'example@sina.com'  # 收件人邮箱地址
MAIL_BODY = '请查收附件!'  # 邮件正文内容,可以是纯文本或 HTML
MAIL_SUBJECT = 'Python SMTP 邮件测试'  # 邮件主题

以上代码中,我们成功导入了 smtplibMIMETextHeader 三个模块。随后,我们设置了邮件发送所需的参数,包括发件人和收件人的邮箱地址、SMTP 服务器地址、SMTP 服务器端口、发件人邮箱账号和授权码等信息。最后,我们还定义了邮件正文和邮件主题。

步骤三:连接邮箱服务器并进行认证

try:
    server = smtplib.SMTP_SSL(SMTP_SERVER, SMTP_PORT)
    server.login(MAIL_USERNAME, MAIL_PASSWORD)
    print("登录成功")
except smtplib.SMTPException as e:
    print("登录失败,原因:", e)

在以上代码中,我们使用 smtplib 模块中的 SMTP_SSL 方法建立与 SMTP 服务器的 SSL 加密连接,并调用 login 方法进行账户认证。其中,login 方法需要传入发件人邮箱账号和授权码两个参数。

步骤四:构造邮件内容并发送邮件

try:
    message = MIMEText(MAIL_BODY, 'plain', 'utf-8')
    message['From'] = Header(FROM_ADDR, 'utf-8')
    message['To'] = Header(TO_ADDR, 'utf-8')
    message['Subject'] = Header(MAIL_SUBJECT, 'utf-8')
    server.sendmail(FROM_ADDR, [TO_ADDR], message.as_string())
    print("邮件发送成功")
except Exception as e:
    print("邮件发送失败,原因:", e)
finally:
    server.quit()

在以上代码中,我们使用 MIMEText 类构造邮件正文,并使用 Header 类添加发件人、收件人和主题信息。然后,我们调用 sendmail 方法发送邮件。该方法需要传入发件人邮箱地址、收件人邮箱地址和邮件内容三个参数,其中邮件内容需要使用 message.as_string() 方法将其转换为字符串类型。最后,我们调用 quit 方法断开与 SMTP 服务器的连接。

示例一:发送纯文本邮件

import smtplib
from email.mime.text import MIMEText
from email.header import Header

# 邮箱参数
SMTP_SERVER = 'smtp.qq.com'
SMTP_PORT = 465
MAIL_USERNAME = 'example@qq.com'
MAIL_PASSWORD = '授权码'

# 邮件内容
FROM_ADDR = 'example@qq.com'
TO_ADDR = 'example@sina.com'
MAIL_BODY = '这是一封使用 Python 发送的纯文本邮件!'
MAIL_SUBJECT = 'Python SMTP 邮件测试'

try:
    server = smtplib.SMTP_SSL(SMTP_SERVER, SMTP_PORT)
    server.login(MAIL_USERNAME, MAIL_PASSWORD)

    message = MIMEText(MAIL_BODY, 'plain', 'utf-8')
    message['From'] = Header(FROM_ADDR, 'utf-8')
    message['To'] = Header(TO_ADDR, 'utf-8')
    message['Subject'] = Header(MAIL_SUBJECT, 'utf-8')
    server.sendmail(FROM_ADDR, [TO_ADDR], message.as_string())
    print("纯文本邮件发送成功")
except Exception as e:
    print("邮件发送失败,原因:", e)
finally:
    server.quit()

在以上示例中,我们发送了一封纯文本邮件。其中,我们使用 MIMEText 类构造邮件正文,并将第二个参数设置为 plain。这意味着邮件正文以纯文本方式展示。此外,所有的 HTML 标签都将被忽略。

示例二:发送带附件的邮件

import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from email.mime.application import MIMEApplication
from email.header import Header

# 邮箱参数
SMTP_SERVER = 'smtp.qq.com'
SMTP_PORT = 465
MAIL_USERNAME = 'example@qq.com'
MAIL_PASSWORD = '授权码'

# 邮件内容
FROM_ADDR = 'example@qq.com'
TO_ADDR = 'example@sina.com'
MAIL_BODY = '请查收附件!'
MAIL_SUBJECT = 'Python SMTP 邮件测试'

try:
    server = smtplib.SMTP_SSL(SMTP_SERVER, SMTP_PORT)
    server.login(MAIL_USERNAME, MAIL_PASSWORD)

    message = MIMEMultipart()
    message.attach(MIMEText(MAIL_BODY, 'plain', 'utf-8'))

    # 添加附件
    with open("example.zip", "rb") as f:
        attachment = MIMEApplication(f.read(), _subtype='zip')
        attachment.add_header('Content-Disposition',
                              'attachment', filename='example.zip')
        message.attach(attachment)

    message['From'] = Header(FROM_ADDR, 'utf-8')
    message['To'] = Header(TO_ADDR, 'utf-8')
    message['Subject'] = Header(MAIL_SUBJECT, 'utf-8')
    server.sendmail(FROM_ADDR, [TO_ADDR], message.as_string())
    print("带附件的邮件发送成功")
except Exception as e:
    print("邮件发送失败,原因:", e)
finally:
    server.quit()

以上示例中,我们发送了一封带有附件的邮件。其中,我们使用 MIMEMultipart 类构造多部分邮件内容,并使用一个 MIMEText 对象来保存邮件正文。随后,我们使用 MIMEApplication 类构造附件,并将其添加到邮件中,然后使用 add_header 方法为附件添加一个头部。最后,我们使用 sendmail 方法将邮件发送出去。

这两个示例中的代码块都是使用标准的 Markdown 格式编写的,可以在 GitHub 和博客等平台上直接复制粘贴使用。希望这个完整攻略对你有所帮助。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python使用SMTP发送qq或sina邮件 - Python技术站

(0)
上一篇 2023年5月20日
下一篇 2023年5月20日

相关文章

  • 如何用python实现复制粘贴功能

    如何用Python实现复制粘贴功能 在Python中实现复制和粘贴功能,需要使用三个库:Pyperclip、Tkinter和Xlib。 安装Pyperclip库 首先需要安装Pyperclip库。在终端或命令行中输入以下命令: pip install pyperclip Tkinter窗口 接下来创建一个Tkinter窗口,并在窗口内添加一个“复制”按钮和一…

    python 2023年5月20日
    00
  • Python 使用os.remove删除文件夹时报错的解决方法

    当使用Python的os模块删除文件夹时,可能会遇到如下错误: FileNotFoundError: [Errno 2] No such file or directory: ‘example_dir’ 这个错误通常是由于文件夹不存在而导致的。为了避免这种错误,我们需要确保待删除的文件夹实际存在于磁盘中。下面是实现这一目标的一些步骤。 检查文件夹是否存在 在…

    python 2023年5月13日
    00
  • 利用matlab与Excel交互之单元格操作

    下面我来详细讲解“利用matlab与Excel交互之单元格操作”的完整实例教程。 1. 前置条件 在学习本教程前,需要了解以下基础知识: Matlab基础语法; Excel基本操作; Matlab与Excel交互的基本知识。 2. 准备工作 在使用Matlab与Excel交互之前,需要安装以下工具: Matlab软件; Excel软件; Matlab Exc…

    python 2023年5月13日
    00
  • Python txt文件加入字典并查询的方法

    下面是“Pythontxt文件加入字典并查询的方法”的完整攻略。 1. 将txt文件读入字典 1.1 使用open()函数打开txt文件: f = open(‘file.txt’,’r’) 1.2 使用readlines()方法将txt文件逐行读入一个列表中: lines = f.readlines() 1.3 关闭文件: f.close() 1.4 使用f…

    python 2023年5月13日
    00
  • 只用50行Python代码爬取网络美女高清图片

    下面是详细的攻略: 一、前置知识 要学习网络爬虫,需要以下基础知识: Python 编程语言基础 HTTP协议 HTML、CSS、JavaScript 技术 正则表达式 二、爬虫实现步骤 1.确定网站 选择一个美女图片分享网站,例如 Tuigirl。 2.确定目标 确定要爬取的内容,例如该网站的美女高清图片。 3.分析目标 打开网站,查看网站源代码,了解要爬…

    python 2023年5月14日
    00
  • python学习-List移除某个值remove和统计值次数count

    以下是“Python学习-List移除某个值remove和统计值次数count”的完整攻略。 1. List移除某个值remove 在Python中,List是一种常用的数据类型,用于存储组有序的元素。List中的元素可以是任何类型的数据,包括数字、字符串列表等。有时候,我们需要从List中移除某个特定的值,可以使用remove()方法来实现。remove(…

    python 2023年5月13日
    00
  • Python中Parser的超详细用法实例

    Python中Parser的超详细用法实例 1. 简介 在Python中,Parser是一种解析器,可以用来解析各种文本数据如html、xml等标记语言。Python中的Parser工具有多种,如html.parser、xml.etree.ElementTree、BeautifulSoup等。这些工具可以用来解析不同格式的标记语言,将其转化为Python中的…

    python 2023年6月3日
    00
  • python编写计算器功能

    首先我们需要了解一下python中计算器的基本实现原理,接着再沿着这个思路来进行编写。 1. 实现原理 计算器的实现原理,主要包含以下几个步骤: 将用户输入的字符串表达式转换为可以进行计算的格式; 对表达式进行求值计算; 返回计算结果。 想要实现一个简单的计算器,我们可以使用Python的eval()函数。该函数可以计算其参数中的表达式,并且返回计算结果。 …

    python 2023年6月13日
    00
合作推广
合作推广
分享本页
返回顶部