关于阿里云上使用smtp的25号端口被禁用的问题

本文介绍了一种在阿里云服务器上使用Python发送邮件时遇到25号端口被封锁的问题及解决方案。通过采用SSL加密的SMTP服务,使用465端口成功绕过限制,实现邮件正常发送。

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

        在使用python进行SMTP服务进行发送邮件的时候,出现在发送的的过程中阻塞但是并不报错的现象,经过调试后发现,在连接SMTP服务器的时候发生阻塞。这个原因的产生是因为阿里云服务器关闭了25号端口,这个25号端口正是SMTP需要的端口。

        为了解决25号端口的问题,可以采用带有SSL的SMTP服务。这个服务采用的端口是465。

from os import system

import sys

reload(sys)

sys.setdefaultencoding('utf8') 

import smtplib  

def mail():

         from_addr = ""   #email addresss include domain name 

         password = ""        #password 

         to_addr = ""   # target email address 

         smtp_server = "smtp.qq.com"       #smtp sever domain for qq is smtp.qq.com  

         msg = MIMEText('hello, send by python !!!','plain','utf-8')

         msg['Subject'] = Header("test auto send mail", 'utf-8')

         msg['from'] = from_addr

         msg['to'] = to_addr

                

         server = smtplib.SMTP_SSL()    #  server = smtplib.SMTP()

         #server.set_debuglevel(1)

         server.connect(smtp_server,465)

         #server = smtplib.SMTP_SSL(smtp_server,465)

         server.ehlo(smtp_server)

         server.login(from_addr,password) 

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

         server.quit() 

         print('email has send out !')

         return True

mail()

 

### 关于 `smtp.163.com` 的默认端口配置 #### 默认端口 对于 `smtp.163.com`,其默认的 SMTP 端口25。然而,在某些网络环境中(例如阿里云),由于安全策略的原因,可能会禁用端口[^3]。 #### 推荐使用端口 为了确保邮件服务能够正常运行,建议使用支持 SSL/TLS 加密的端口 465 或者 587。其中: - **端口 465** 是专门为 SSL 连接设计的,适用于需要更高安全性的情况。 - **端口 587** 则通常用于 STARTTLS 协议,它会在连接建立后升级到加密模式。 如果遇到类似 “Got bad greeting from SMTP host: smtp.163.com, port: 465, response: [EOF]” 的错误,则可能是因为未正确启用 SSL 设置或者目标服务器拒绝了请求[^2]。 #### Spring Boot 中的配置示例 以下是基于 Spring Boot 的一种典型邮件发送器配置方式,采用 SSL 并指定端口为 465: ```yaml spring: mail: host: smtp.163.com username: mainname@163.com password: 123456 default-encoding: UTF-8 port: 465 properties: mail: smtp: auth: true starttls: enable: false ssl: enable: true ``` 上述 YAML 文件片段展示了如何在应用中定义必要的参数来完成与网易邮箱的服务对接[^1]。 #### Java Apache Commons Email 实现代码 当利用 Apache Commons Email 库构建应用程序时,可以按照下面的方式调整设置以适应新的环境需求: ```java import org.apache.commons.mail.Email; import org.apache.commons.mail.SimpleEmail; public class MailSender { public static void setupMail(Email email) throws Exception { email.setHostName("smtp.163.com"); email.setAuthentication("mainname@163.com", "123456"); // 启用SSL加密机制 email.setSSLOnConnect(true); email.setSslSmtpPort("465"); // 添加收件人地址及其他必要字段... } } ``` 此段程序说明了怎样通过编程手段激活 SSL 功能以及设定相应的 SMTP 端口数值[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值