java发送Email

2018-12-17  本文已影响42人  YukunWen

引言

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

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);
        }
    }
}
上一篇下一篇

猜你喜欢

热点阅读