JAVA实现.126邮箱发送
126邮箱服务器地址:
- POP3:pop.126.com
- SMTP:smtp.126.com
- IMAP:imap.126.com
端口:
- POP3:110
- POP3 SSL:995
- IMAP:143
- IMAP SSL: 993
- SMTP:25
- SMTP SSL:465
- SMTP TLS:587
首先开启POP3/SMTP/IMAP
!!!根据操作你会获得一个授权码,授权码保存下来等会要用到!!!
1.搭建SpringBoot 添加依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context-support</artifactId>
<version>4.3.7.RELEASE</version>
</dependency>
2.在配置文件中添加邮箱基本配置我这里用的是.properties
#邮箱
#配置 smtp 服务器地址
spring.mail.host=smtp.126.com
# smtp 服务器的端口25/ssl 465
spring.mail.port=25
# 配置邮箱用户名
spring.mail.username=你要发送短信的邮箱账号
# 配置申请到的授权码
spring.mail.password=刚才获取到了授权码
# 配置邮件编码
spring.mail.default-encoding=UTF-8
# 配饰 SSL 加密工厂
spring.mail.properties.mail.smtp.socketFactory.port=465
spring.mail.properties.mail.smtp.socketFactory.class=javax.net.ssl.SSLSocketFactory
# 表示开启 DEBUG 模式
spring.mail.properties.mail.debug=true
简单邮箱发送示例代码:
@SpringBootTest
class SendqqemailApplicationTests {
@Autowired
JavaMailSender javaMailSender;
/**
* 发送简单邮件
*/
@Test
public void sendSimpleMail() {
SimpleMailMessage msg = new SimpleMailMessage(); //构建一个邮件对象
msg.setSubject("这是一封测试邮件"); // 设置邮件主题
msg.setFrom("和配置文件中保持一致邮箱"); // 设置邮箱发送者
msg.setTo("接受者邮箱"); // 设置邮件接收者,可以有多个接收者
msg.setSentDate(new Date()); // 设置邮件发送日期
msg.setText("这是测试邮件的正文"); // 设置邮件的正文
javaMailSender.send(msg);
}
}
附件邮箱发送示例代码:
@Component
@Slf4j
public class SendEmail {
@Autowired
private JavaMailSender javaMailSender;
public void sendEmail(JSONObject object) throws MessagingException {
log.info("===============>开始发送邮件===============");
MimeMessage mimeMessage = javaMailSender.createMimeMessage();
//解决附件名太长会被截取掉或者中文乱码问题
System.getProperties().setProperty("mail.mime.splitlongparameters", "false");
MimeMessageHelper helper = new MimeMessageHelper(mimeMessage, true,"utf-8");
// 设置邮件主题
helper.setSubject(object.getString("subject"));
// 设置邮箱发送者
helper.setFrom(object.getString("from"));
// 设置邮件接收者,可以有多个接收者
helper.setTo(object.getString("to"));
// 设置邮件发送日期
helper.setSentDate(new Date());
// 设置邮件的正文
helper.setText(object.getString("text"));
//附件名称,附件文件
File file=new File(object.getString("fileUrl"));
String fileName=file.getName();
helper.addAttachment(fileName,file);
javaMailSender.send(mimeMessage);
log.info("===============>发送邮件结束===============");
}
这样一个126的邮箱发送就基本完成了
注意:
如果你当前的项目部署在了阿里云申请的服务器上,你会发现邮箱发送失败,会出现端口被占错误出现,是因为
阿里云服务器默认禁用25端口
解决办法:
将邮箱发送换成SSL形式,更换端口
1.更改配置文件,其他内容不变,更换SSL端口
# smtp 服务器的端口25/ssl 465
spring.mail.port=465
2.添加SSL配置
#ssl
spring.mail.properties.mail.smtp.auth=true
spring.mail.properties.mail.smtp.ssl.enable=true
spring.mail.properties.mail.smtp.starttls.enable=true
spring.mail.properties.mail.smtp.starttls.required=true
这样服务器端口被占问题就解决了,