java发送Email
2018-12-17 本文已影响42人
YukunWen
引言
在开发中,有的时候会用到邮件平台通知。最常见的就是亚马逊经常给用户推荐一些商品,以及购买商品后的邮件通知。
java发送邮件
博主以springboot和qq邮箱的配置为例,撰写一个发送邮件的demo。
- 首先引入相应的mail包
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
-
在QQ邮箱配置中设定开启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
- 具体代码
有了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);
}
}
}