lzl2040 2023-04-17 16:39 采纳率: 0%
浏览 210

TimeoutError: [WinError 10060] 由于连接方在一段时间后没有正确答复或连接的主机没有反应,连接尝试失败,如何解决?(标签-python)

使用python的smtplib库出现连接超时问题

问题概述

我想用python的smtplib库来发送邮件,但是出现了超时问题

代码

# smtplib 用于邮件的发信动作
import smtplib
# email 用于构建邮件内容
from email.mime.text import MIMEText
# 构建邮件头
from email.header import Header
from email.message import EmailMessage
import ssl
from loguru import logger

class EmailSend():
    def __init__(self,sender,receiver,auth_key):
        self.sender = sender
        self.receiver = receiver
        self.auth_key = auth_key

    def send(self,content):
        # 端口号:465 or 587
        port = 465
        host = "smtp.qq.com"
        # 正文
        msg = MIMEText(content, 'plain','utf-8')
        # 邮件主题
        msg['Subject'] = "通知"  # 邮件主题
        msg['From'] = self.sender
        msg['To'] = self.receiver
        logger.info("开始发送邮件...")
        smtp = smtplib.SMTP()  # 建立和SMTP邮件服务器的连接
        smtp.connect(host,port)
        logger.info("连接服务器完成")
        smtp.login(self.sender, self.auth_key)
        logger.info("登录成功")
        smtp.sendmail(self.sender,self.receiver,msg.as_string())
        smtp.quit()
        logger.info("邮件发送完成!")

if __name__ == '__main__':
    # 邮箱授权码
    auth_key = "my_key"
    # 发生者的邮箱
    sender_email = "1234@qq.com"
    # 接收者的邮箱
    receiver_email = ["12345@qq.com"]
    email_s = EmailSend(sender_email, receiver_email, auth_key)
    # 不知道为什么,无法连接上服务器
    email_s.send("这是一个测试")

错误

TimeoutError: [WinError 10060] 由于连接方在一段时间后没有正确答复或连接的主机没有反应,连接尝试失败。

  • 写回答

2条回答 默认 最新

  • threenewbee 2023-04-17 16:45
    关注

    检查对方主机是否存在,是否网络正常,你可以看看qq的文档,用的端口、协议是否不是标准的。

    评论

报告相同问题?

问题事件

  • 创建了问题 4月17日