美文网首页
java发送Email

java发送Email

作者: YukunWen | 来源:发表于2018-12-17 14:44 被阅读42次

    引言

    在开发中,有的时候会用到邮件平台通知。最常见的就是亚马逊经常给用户推荐一些商品,以及购买商品后的邮件通知。

    java发送邮件

    博主以springboot和qq邮箱的配置为例,撰写一个发送邮件的demo。

    1. 首先引入相应的mail包
        <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-mail</artifactId>
        </dependency>
    
    1. 在QQ邮箱配置中设定开启smtp服务


      图1.点击设置
    图2.点击账户 图3.开启smtp服务,并生成授权码
    1. 相应配置
    #邮箱服务器地址
    spring.mail.host=smtp.qq.com
    #用户名
    spring.mail.username=2423486471@qq.com
    #密码
    spring.mail.password=这里输入qq邮箱第三方授权码,请记住并不是QQ的登陆密码
    spring.mail.default-encoding=UTF-8
    spring.mail.port=587
    spring.mail.properties.mail.smtp.auth=true
    spring.mail.properties.mail.smtp.starttls.enable=true
    spring.mail.properties.mail.smtp.starttls.required=true
    #以谁来发送邮件
    mail.fromMail.addr=2423486471@qq.com
    
    1. 具体代码
      有了springboot的框架,发送邮件变得非常简单
    public interface MailService {
    
        /**
         * 发送邮件
         * @param to 目的地
         * @param subject 主题
         * @param content 内容
         * @param os 附件
         * @param attachmentFilename 附件名
         * @throws Exception
         */
        public void sendMail(String to, String subject, String content,  ByteArrayOutputStream os, String attachmentFilename) throws Exception;
    }
    
    @Component
    @Slf4j
    public class MailServiceImpl implements MailService {
    
        @Autowired
        private JavaMailSender mailSender;
    
        @Value("${mail.fromMail.addr}")
        private String from;
    
        @Override
        public void sendMail(String to, String subject, String content, ByteArrayOutputStream os, String attachmentFilename) throws Exception {
            try {
                MimeMessage message = mailSender.createMimeMessage();
                MimeMessageHelper helper = new MimeMessageHelper(message, true);
                helper.setFrom(from);
                helper.setTo(to);
                helper.setSubject(subject);
                helper.setText(content);
                if (null != os) {
                    //附件
                    InputStreamSource inputStream = new ByteArrayResource(os.toByteArray());
                    helper.addAttachment(attachmentFilename, inputStream);
                }
    
                mailSender.send(message);
                log.info("简单邮件已经发送。");
            } catch (Exception e) {
                log.error("发送简单邮件时发生异常!", e);
                throw new FantuanRuntimeException("发送简单邮件时发生异常!",e);
            }
        }
    }
    

    相关文章

      网友评论

          本文标题:java发送Email

          本文链接:https://www.haomeiwen.com/subject/lvuqkqtx.html