步骤概述
为了解决“Python发送QQ邮件连不上邮件服务器”的问题,提示:“连接超时: _ssl.c:993: The handshake operation timed out”

首先需要了解整个发送邮件的流程,然后逐步进行教学。下面是发送QQ邮件的流程图:

步骤 操作

1 导入smtplib库
2 连接QQ邮件服务器
3 登录QQ邮箱
4 编写邮件内容
5 发送邮件
6 退出连接

具体步骤及代码示例

  1. 导入smtplib库
    首先,我们需要导入smtplib库,该库是用来发送邮件的关键库。
import smtplib
  1. 连接QQ邮件服务器
    在接下来,我们需要连接QQ邮件服务器,QQ邮箱的SMTP服务器地址为:smtp.exmail.qq.com,端口为465。
smtp_server = 'smtp.qq.com'
server = smtplib.SMTP_SSL('smtp.exmail.qq.com', 465, timeout=10)  # 使用SSL协议连接
  1. 登录QQ邮箱 在连接成功后,需要登录QQ邮箱,输入你的QQ邮箱和授权码(授权码是用来代替QQ邮箱密码的),示例中使用的是授权码。
# 登录QQ邮箱
email = 'your_email@qq.com'  # 修改为你的QQ邮箱
password = 'your_password_or_auth_code'  # 修改为你的QQ邮箱授权码
server.login(email, password)
  1. 编写邮件内容
    接下来,我们可以编写邮件的内容,包括收件人、主题和正文。
# 编写邮件内容
from email.mime.text import MIMEText
from email.header import Header

msg = MIMEText('这是一封Python发送的邮件', 'plain', 'utf-8')
msg['From'] = email
msg['To'] = 'recipient@qq.com'  # 修改为收件人的邮箱
msg['Subject'] = Header('Python邮件', 'utf-8').encode()
  1. 发送邮件
    然后,我们使用sendmail方法发送邮件。
# 发送邮件
server.sendmail(email, ['recipient@qq.com'], msg.as_string())
  1. 退出连接
    最后,发送完邮件后,记得退出连接。
# 退出连接
server.quit()

其实以前都可以正常使用,今天突然不能运行,直接奔溃了
但是

server = smtplib.SMTP( 'smtp.exmail.qq.com')

是可以正常使用的。

代码如下: 可发送邮件,附件内容,可根据情况在添加

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

mail_host = 'smtp.exmail.qq.com'
mail_user= 'xxj@***.com.cn'
mail_pass = '*****'
sender = 'xxj@***.com.cn'
tolist = ['xxj@***.com.cn']


msg = MIMEText('hello, send by Python...', 'plain', 'utf-8')
msg['From'] = sender
msg['To'] = COMMASPACE.join(tolist)
msg['Subject'] = Header('Python SMTP 邮件测试', 'utf-8')
sever = smtplib.SMTP('smtp.exmail.qq.com')
# sever = smtplib.SMTP_SSL(self.mail_host, 465)
result = sever.login(mail_user, mail_pass)
sever.sendmail(sender, tolist , msg.as_string())
print('finish')
sever.quit()

发送结果如下:

在这里插入图片描述

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐