java发邮件 动态切换当前发送人

最近项目需要实现一个发送邮件功能,踩了一些坑,最终实现了。
在此写一下心得

开始做的时候一塌糊涂,觉得挺难的,但是做完之后发现其实简单的一批,接下来我就来写一下实现流程。

1、准备好拿来发送邮件的账号,发邮件的时候需要用到(这里拿网易126邮箱为例)。
在这里插入图片描述
好,点击开启后,发送验证短信就拿到了,这里已经完成了一大半了。

2、接下来去配置我们的后台。
2.1、pom.xml 引入 jar

   	<dependency>
   		<groupId>org.springframework.boot</groupId>
   		<artifactId>spring-boot-starter-mail</artifactId>
   	</dependency>

2.2 开始编写代码(我这里拿带附件的为例子、我这里配置的动态的,根据传入的发送人信息和收件人信息进行发送)

   	 /**
    * 带附件的邮件
    * @param record 配置发件人授权码 等信息
    * @param emailTo 收件人
    * @param emailSubject 主题
    * @param emailContent 内容
    * @param uploadPDF  uploadEXECL  uploadCAD附件
    */
   @Override
   public int sendAttachmentsMail(String emailHost,String emailUsername,String emailPassword,String emailTo, String emailSubject, String emailContent,String uploadPDF,String uploadEXECL,String uploadCAD) {
       //创建实例
       JavaMailSenderImpl sender = new JavaMailSenderImpl();
       //设置发送的服务器(这里的属性 qq和网易的不一样)qq:smtp.qq.com   网易:smtp.126.com
       sender.setHost(emailHost);
       //当前发送人邮箱(也就是自己)
       sender.setUsername(emailUsername);
       //授权码 (不是邮箱密码  是上面咱们的准备工作获取的那个码)
       sender.setPassword(emailPassword);
       //设置端口(这里用456、默认的25 在阿里云服务器上未开放,推荐我们设置456)
       sender.setPort(456);
       //然后设置456需要设置底下一些东西、之前这写我写到yml里,就是不清楚该怎么去修改。
       Properties p = new Properties();
       p.setProperty("mail.smtp.auth", "true");
       p.setProperty("mail.smtp.ssl", "true");
       p.setProperty("mail.smtp.socketFactory.port", "465");
       p.setProperty("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
       p.setProperty("mail.smtp.starttls.enable", "true");
       p.setProperty("mail.smtp.starttls.required", "true");
       sender.setJavaMailProperties(p);
       MimeMessage message = sender.createMimeMessage();
   	//解决-发送邮件时附件名太长会被截取掉或者中文乱码问题
       System.getProperties().setProperty("mail.mime.splitlongparameters", "false");
       try {
           //这里的utf-8解决 邮件 内容乱码
           MimeMessageHelper helper = new MimeMessageHelper(message, true, "utf-8");
           //当前发送人邮箱(也就是自己)
           helper.setFrom(emailUsername);
           //发送到的邮箱地址
           helper.setTo(emailTo);
           //邮件主题、标题
           helper.setSubject(emailSubject);
           //类容
           helper.setText(emailContent, true);
           //这里赋值的是附件及名称 attachmentsMailNameDispose
           helper.addAttachment(attachmentsMailNameDispose(uploadPDF), file);
           //多个这样创建 
           // helper.addAttachment(attachmentsMailNameDispose(uploadEXECL), file);
		  // helper.addAttachment(attachmentsMailNameDispose(uploadCAD), file);

           sender.send(message);
           //日志信息
           logger.info("邮件已经发送。");
           return 200;
       } catch (MessagingException e) {
           logger.error("发送邮件时发生异常!", e);
           return 500;
       }


   }
  • 4
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值