如何使用Python调用QQ邮箱发送邮件?

在本文中,我将介绍如何使用Python通过QQ邮箱发送电子邮件。我们将使用smtplibemail库来实现这一目标。这篇文章将包含以下步骤:

  1. 设置QQ邮箱的SMTP服务
  2. 编写Python代码发送电子邮件

一、设置QQ邮箱的SMTP服务

在使用QQ邮箱发送电子邮件之前,我们需要先开启QQ邮箱的SMTP服务并获取授权码。具体步骤如下:

1、登录QQ邮箱

打开QQ邮箱并登录。

2、进入设置

点击右上角的“设置”齿轮图标,然后选择“账户”。

3、开启SMTP服务

在“POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务”下,开启“SMTP服务”。

4、获取授权码

开启SMTP服务后,系统会提示您生成一个授权码。记住这个授权码,它将用作密码在Python代码中使用。

二、库简介

在开始编写代码之前,我们先简单介绍一下将要使用的两个Python标准库:smtplibemail

1、smtplib库

smtplib是Python的一个内置库,用于发送电子邮件。它实现了简单邮件传输协议(SMTP),允许用户通过Python程序与邮件服务器进行通信并发送邮件。

主要功能包括:

  • 连接到SMTP服务器
  • 登录邮箱账户
  • 发送邮件

2、email库

email库是Python的一个内置库,用于构建和解析电子邮件消息。它提供了创建邮件内容和头字段的各种工具和类。

主要功能包括:

  • 创建邮件内容(文本、HTML、附件等)
  • 设置邮件头字段(如FromToSubject
  • 解析电子邮件消息

三、编写Python代码发送电子邮件

1、导入所需库

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

2、连接邮箱服务器

使用smtplib模块的SMTP_SSL类创建一个实例,并为这个实例传入两个参数。

        第一个参数是服务器地址。简单来说,我们需要使用该地址帮我们代收发邮件。该地址以字符串形式传入。

        第二个参数是端口号,每个服务器有多个端口,只有通过对应的端口,程序才能访问到该服务器。QQ邮箱的SMTP的端口号是465或者587。


smtpobj = smtplib.SMTP_SSL('smtp.qq.com')
smtpobj.connect(smtp_server, 465) 

3、登陆邮箱

        接下来,我们定义用户名、密码两个变量,用户和密码使用自己的QQ邮箱和第一步得到的授权码,就可以通过login()方法,来登陆自己的邮箱。

from_addr = 'xxx'
password = 'xxx'
smtpobj.login(from_addr, password) 

 4、编辑收发件人

        登录邮箱后,我们通常要先设置好邮件的主题、发件人和收件人等信息。要构建以上信息,还需要用到另外一个内置模块email。email模块主要负责构造邮件页面的布局,比如发件人,收件人,主题,正文,附件等。

        email模块的类MIMEMultipart,可以整合邮件头、正文和附件等信息。所以,当我们要发送带附件的组合型邮件时,需要从email.mime.multipart中导入MIMEMultipart类。

        email模块的类Header,用于设置邮件头,即邮件的主题,收发件人。所以,当我们要设置邮件的主题,收发件人时,就需要从email.header中导入Header类。

msg = MIMEMultipart()
msg['From'] = '"John Doe" <xxx>' # 发送者
msg['To'] = Header('到点就困告')  # 接收者
subject = 'steam今日促销'
msg['Subject'] = Header(subject, 'utf-8')  # 邮件主题

5、构建正文 

使用MIMEText类创建一个实例对象,为这个实例传入三个参数。

        第一个参数是文本内容,即我们需要发送邮件的正文内容。

        第二个参数是文本格式,表示我们的正文内容以何种格式展示。"html"表示网页链接的格式。

        第三个参数是编码。示例中的"utf-8"编码,能防止中文乱码。

html_msg = """
<p>Steam 今日游戏促销...</p>
<p><a href="https://store.steampowered.com/specials/">这是一个链接</a></p>
"""
# 邮件正文内容
msg.attach(MIMEText(html_msg, 'html', 'utf-8'))

6、发送邮件 

        最后,调用对象qqMail的sendmail()方法来发送邮件,需要传入发件人、收件人、邮件内容,邮件内容需要为字符串类型,所以在示例中,使用as_string()方法将对象message变为字符串类型。

smtpobj.sendmail(from_addr, to_addr, msg.as_string())

总结

完整代码:

# smtplib 用于邮件的发信动作
import smtplib
# email 用于构建邮件内容
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
# 构建邮件头
from email.header import Header


# 发信方的信息:发信邮箱,QQ 邮箱授权码
from_addr = 'xxx'
password = 'xxx'
# 收信方邮箱
to_addr = 'xxx'
# 发信服务器
smtp_server = 'smtp.qq.com'

html_msg = """
<p>Steam 今日游戏促销...</p>
<p><a href="https://store.steampowered.com/specials/">这是一个链接</a></p>
"""


# 创建一个实例msg
msg = MIMEMultipart()
msg['From'] = '"John Doe" <xxx>' # 发送者
msg['To'] = Header('到点就困告')  # 接收者
subject = 'steam今日促销'
msg['Subject'] = Header(subject, 'utf-8')  # 邮件主题
# 邮件正文内容
msg.attach(MIMEText(html_msg, 'html', 'utf-8'))


try:
    smtpobj = smtplib.SMTP_SSL(smtp_server)
    smtpobj.connect(smtp_server, 465)    # 建立连接--qq邮箱服务和端口号
    smtpobj.login(from_addr, password)   # 登录--发送者账号和口令
    smtpobj.sendmail(from_addr, to_addr, msg.as_string())
    print("邮件发送成功")
except smtplib.SMTPException as e:
    print("无法发送邮件:", e)
finally:
    # 关闭服务器
    smtpobj.quit()

效果如下:

  • 11
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Python微信企业邮箱发送邮件需要使用第三方库,常用的有smtplib、email、os等库。 首先需要导入所需的库,并定义发件人、收件人、邮件主题和内容等信息。使用email库创建一个MIMEText对象,将邮件内容存储在该对象的msg属性中。接着使用smtplib库创建SMTP对象,连接到企业邮箱服务器使用用户名和密码登录。最后调用SMTP对象的sendmail方法,将邮件发送给收件人。 可能会遇到企业邮箱发件人地址需要通过审核的问题,需要在企业邮箱后台进行设置。 下面是一个简单的python微信企业邮箱发送邮件的示例代码: ```python import smtplib from email.mime.text import MIMEText import os # 发件人、收件人、邮件主题、邮件内容等信息 sender = 'xxx@yourcompany.com' receiver = 'xxx@othercompany.com' subject = 'Python发送企业邮件' content = '这是一封测试邮件,仅供参考。' # 创建MIMEText对象,邮件内容存储在该对象的msg属性中 msg = MIMEText(content) msg['Subject'] = subject msg['From'] = sender msg['To'] = receiver # 定义企业邮箱服务器和用户名、密码 smtp_server = 'smtp.exmail.qq.com' user_name = 'your_username' password = 'your_password' # 使用SMTP对象连接到企业邮箱服务器,并进行登录验证 smtp_obj = smtplib.SMTP(smtp_server, 587) smtp_obj.ehlo() smtp_obj.starttls() smtp_obj.login(user_name, password) # 发送邮件 smtp_obj.sendmail(sender, receiver, msg.as_string()) # 关闭连接 smtp_obj.quit() ``` 需要注意的是,在实际使用时,需要将代码中的发件人、收件人、企业邮箱服务器、用户名和密码等信息替换为自己的实际信息。同时,还需要考虑邮件附件、邮件格式等问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

到点就困告

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值