JAVA实现126邮箱发送及部署后发送邮箱报错问题

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

这样服务器端口被占问题就解决了,

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值