注:前置条件,需要获取发送方的SMTP服务授权码,如果是企业邮箱需要联系管理员获取授权码。
一、163邮箱发件配置
二、Maven依赖
在 pom.xml
中添加 JavaMail 依赖:
<dependency>
<groupId>com.sun.mail</groupId>
<artifactId>javax.mail</artifactId>
<version>1.6.2</version>
</dependency>
三、Java代码示例
public static void sendMail() {
// 1. 配置邮件服务器属性
Properties props = new Properties();
props.put("mail.smtp.host", "smtp.163.com"); // 163邮箱SMTP地址
props.put("mail.smtp.port", "465"); // 使用TLS端口
props.put("mail.smtp.auth", "true"); // 启用认证
props.put("mail.smtp.ssl.enable", "true"); // 启用TLS加密
// 2. 创建会话并认证(关键:使用163邮箱的授权密码)
Session session = Session.getInstance(props, new Authenticator() {
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(
"1885111****@163.com", // 你的163邮箱账号
"****" // 163邮箱的授权密码(非登录密码)
);
}
});
try {
// 3. 构建邮件消息
Message message = new MimeMessage(session);
message.setFrom(new InternetAddress("1885111****@163.com")); // 发件人
message.setRecipients(Message.RecipientType.TO,
InternetAddress.parse("12734*****@qq.com")); // 收件人QQ邮箱
message.setSubject("来自163邮箱的测试邮件主题");
message.setText("这是通过JavaMail API发送的邮件!");
// 4. 发送邮件
Transport.send(message);
System.out.println("邮件发送成功!");
} catch (MessagingException e) {
e.printStackTrace();
System.out.println("邮件发送失败!");
}
}
四、关键配置注意事项
1、163邮箱授权密码获取
进入「设置」→「POP3/SMTP/IMAP」→「开启一个SMTP」服务需要短信验证。
2、Could not connect to SMTP host: smtp.163.com, port: 587, response: -1
可能的问题:
- 网络连接问题:用户是否能够访问smtp.163.com的587端口?可能是本地网络限制或公司防火墙阻止了连接。
- SMTP配置:检查主机名、端口是否正确,是否启用了TLS加密。
- 认证信息:确认使用的授权密码是否正确,邮箱地址是否正确。
- SSL/TLS设置:是否正确配置了加密协议,端口是否匹配(如587需要TLS,465需要SSL)。
- 服务器状态:163邮箱的SMTP服务是否正常运行,是否有维护或故障。
最后解决方案:
修改端口并采取SSL验证,测试结果正常发送,邮箱可查验相关测试邮件!