使用Eclipse+Maven通过smtp.mailtrap.io发送邮件失败求助
解决Mailtrap SMTP发送邮件失败的问题
看起来你遇到的问题主要是端口与加密方式不匹配,再加上可能的认证信息配置错误,导致连接smtp.mailtrap.io失败。我来帮你一步步排查修复:
核心问题分析
错误提示里提到的是smtp.mailtrap.io:465失败,但你的代码里设置的是2525端口,同时开启了setSSLOnConnect(true)——这是矛盾的:
- Mailtrap的2525/587端口是用于STARTTLS加密(先建立普通连接再升级为加密连接)
- 465端口才是用于直接SSL/TLS连接
另外要特别注意:Mailtrap的SMTP认证用户名不是你的邮箱地址,而是你在Mailtrap控制台中对应Inbox的Username(一串随机字符串),密码也是控制台里的Password,这点很容易搞错!
修复方案(二选一)
方案1:使用465端口+直接SSL连接
修改代码,把端口换成465,保持SSL连接的设置:
Email email = new SimpleEmail(); email.setHostName("smtp.mailtrap.io"); email.setSmtpPort(465); // 改用465端口 email.setAuthenticator(new DefaultAuthenticator("你的Mailtrap Inbox用户名", "你的Mailtrap Inbox密码")); email.setSSLOnConnect(true); // 465端口需要直接SSL连接 email.setFrom("user@gmail.com"); email.setSubject("TestMail"); email.setMsg("This is a test mail ... :-) sent through gmail smtp after en..."); // 记得添加收件人 email.addTo("recipient@example.com"); email.send();
方案2:使用2525/587端口+STARTTLS加密
如果想用2525或587端口,需要改用STARTTLS的配置,而不是直接SSL连接:
Email email = new SimpleEmail(); email.setHostName("smtp.mailtrap.io"); email.setSmtpPort(2525); // 或587端口 email.setAuthenticator(new DefaultAuthenticator("你的Mailtrap Inbox用户名", "你的Mailtrap Inbox密码")); email.setStartTLSEnabled(true); // 启用STARTTLS加密 email.setStartTLSRequired(true); // 强制要求加密连接 email.setFrom("user@gmail.com"); email.setSubject("TestMail"); email.setMsg("This is a test mail ... :-) sent through gmail smtp after en..."); email.addTo("recipient@example.com"); email.send();
额外检查项
- 确认Maven依赖:确保你的
pom.xml里引入了正确的Apache Commons Email依赖,比如:
<dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-email</artifactId> <version>1.5</version> </dependency>
- 防火墙/代理:检查你的开发环境是否有防火墙或代理阻止了SMTP端口的连接(2525/465/587)
- Mailtrap Inbox状态:登录Mailtrap控制台,确认对应的Inbox是正常启用状态,没有被限制
内容的提问来源于stack exchange,提问作者Tarun
相关产品推荐
相关产品推荐

