解决Python通过STMP发送邮件出现 TimeoutError: [WinError 10060]

风变编程17关 用python smtplib 发送邮件

每一步都按照课程操作的,最后却总是出现这个error

TimeoutError: [WinError 10060] A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond
在这里插入图片描述
在这个问题之前我还遇到过另外的一些error,比如下面这个,其他的我没有记录下来,
在这里插入图片描述

作为业余爱好者,我记得我查了百度,先后做了如下操作:

  1. 一开始的error我感觉是我的VS Code 内部设置有问题,不支持smtplib,我查了一些文章,安装了个 Perl Critic, 还下载了个openssl-1.1.1g.tar (不知道起没起到作用)

  2. 也有一些文章说是邮箱设置的问题,然后我去qq邮箱更改了设置如下
    在这里插入图片描述
    在这里插入图片描述
    但是,以上两个方法都没有帮助我最终解

Python 可以通过 `smtplib` 库轻松地使用 SMTP 协议发送电子邮件。SMTP 是一种用于在互联网上传输电子邮件的应用层协议。以下是基本步骤以及示例代码: ### 步骤说明 1. **导入模块**:需要引入 Python 自带的 `smtplib` 和 `email.mime.text` 模块。 2. **设置服务器和端口**:指定使用的邮箱服务提供商的 SMTP 服务器地址及端口号(例如 Gmail 的 SMTP 地址是 smtp.gmail.com,默认端口为587 或465)。 3. **创建消息内容**:构建邮件的主题、收件人、发件人等信息,并将文本或 HTML 内容加入到 MIMEText 对象中。 4. **登录账户并发送邮件**:调用 `login()` 函数输入用户名密码验证身份后,再利用 `sendmail()` 发送邮件。 ```python import smtplib from email.mime.text import MIMEText from email.header import Header # 邮箱基本信息配置 smtp_server = 'smtp.example.com' # 替换为你所用邮箱服务商提供的SMTP服务器域名 port = 587 # 端口号, 根据需求选择是否加密 (如tls) sender_email = "your_account@example.com" # 用户名(即自己的邮箱账号) password = "your_password_or_app_specific_code" # 密码或者应用专用密钥 receiver_emails = ["recipient@example.com"] # 收件人的列表 # 创建简单的纯文本形式的邮件正文 message = MIMEText('这是测试邮件的内容', 'plain', 'utf-8') message['From'] = Header("发件人姓名", 'utf-8') # 显示的发件人名称 message['To'] = Header("接收者姓名", 'utf-8') # 接受者的显示名字可以自定义 subject = '主题行' message['Subject'] = Header(subject, 'utf-8') try: server = smtplib.SMTP(smtp_server, port) # 连接到SMTP服务器 server.starttls() # 启动TLS模式增加安全性(如果支持的话) server.login(sender_email, password) # 登录你的邮箱 for receiver in receiver_emails: # 循环遍历所有目标地址逐一发送 server.sendmail(sender_email, [receiver], message.as_string()) print("邮件已成功发送") except Exception as e: print(f"发生错误:{e}") finally: server.quit() ``` 注意:为了安全起见,在实际项目部署环境中应避免直接硬编码敏感数据(像用户凭证),而是采用环境变量或者其他更稳妥的方式来管理它们。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值