python smtp发邮件报错“[Errno -2] Name or service not known”的解决

作者在实现用户到期邮件提醒功能时遇到邮件发送失败的问题,经过排查发现是由于配置文件中收件人和发件人字段误加引号导致。去掉多余引号后,邮件功能恢复正常。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近给ss-py-mu写了个检查用户是否到期,并在到期前的第2天邮件提醒的功能。
配置存储在ini文件中,通过configparser模块获取,但尝试发送邮件的时候发现报错[Errno -2] Name or service not known。

网上查了查说防火墙要开25和53端口,但是我本机调试是没启用防火墙的。而且这个53的DNS一般机器是不会禁用的,25我就有点不明白了,访问邮件服务器的25难道本机也要用25吗?
不过qq企业邮是用的465端口,应该没用到25吧。

最后debug发现我的收件人和发件人都是多了个引号,类似 '\'aaa@sitemcom\'' 这样的。好吧,ini里是不要写引号的,用get会自动当做字符串补上引号,忽略了这点。

去掉多余的引号就正常了。

转载于:https://www.cnblogs.com/dylanchu/p/11141207.html

### Ubuntu 启动接口时遇到 `errno -2` 错误解决方案 当在 Ubuntu 中启动网络接口时遇到 `errno -2, Name or service not known` 的错误提示,这通常意味着系统无法解析指定的域名或服务名称。此问题可能由多种原因引起。 #### 可能的原因分析 1. **DNS 配置问题** DNS 设置不正确可能导致系统无法解析主机名到 IP 地址。应检查 `/etc/resolv.conf` 文件中的 DNS 服务器地址是否有效[^1]。 2. **网络连接未建立** 如果设备尚未获得有效的 DHCP 租约,则可能会发生此类错误。可以尝试重启网络服务来获取新的租约。 3. **hosts 文件配置不当** 检查 `/etc/hosts` 文件是否有正确的条目用于本地主机映射。任何拼写错误都可能导致解析失败。 4. **临时性网络波动** 对于某些情况下的瞬态网络中断,可以通过增加重试机制提高稳定性。对于 Python 应用程序而言,可采用如下方法处理 socket 连接超时的情况: ```python import socket domain_name = 'example.com' ip_address = None max_retries = 5 retries = 0 while not ip_address and retries < max_retries: try: ip_address = socket.gethostbyname(domain_name) break except socket.gaierror as e: print(f"Socket Error: {str(e)}") retries += 1 continue ``` 上述代码展示了如何通过循环多次尝试解析给定域名直至成功或达到最大重试次数为止的方法[^2]。 为了更具体地解决问题,建议按照以下步骤操作: - 查看当前系统的 DNS 配置并验证其有效性; - 使用命令行工具如 `ping`, `nslookup` 或者 `dig` 测试目标域名能否被正常解析; - 若是在虚拟机环境中运行,请确认宿主机与客户操作系统之间的网络设置无误; - 更新软件包列表以及安装最新的安全补丁,确保所有组件处于最新状态;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值