1、导入pom依赖
<dependency>
<groupId>com.sun.mail</groupId>
<artifactId>javax.mail</artifactId>
<version>1.6.0</version>
</dependency>
2、邮箱到邮箱的配置文件
3、发送邮箱接口api
/** * 通知服务 */ public interface NotifyService { boolean sendEmail(String to, String title, String body); boolean sendpdfEmail(String[] to, String title, String body, InputStream inputStream); }
4、实现
package com.fyun.common.utils.impl; import com.fyun.common.utils.NotifyService; import com.fyun.common.utils.model.EmailModel; import com.fyun.common.utils.util.ObjectUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.mail.javamail.JavaMailSender; import org.springframework.mail.javamail.JavaMailSenderImpl; import org.springframework.mail.javamail.MimeMessageHelper; import org.springframework.stereotype.Service; import javax.activation.DataSource; import javax.mail.internet.MimeMessage; import javax.mail.util.ByteArrayDataSource; import java.io.InputStream; import java.util.Properties; @Service public class DefaultNotifyService implements NotifyService { private static final Logger logger = LoggerFactory.getLogger(ObjectUtils.class); private EmailModel emailAccount; public DefaultNotifyService() { } public DefaultNotifyService(EmailModel emailAccount) { this.emailAccount = emailAccount; } @Override public boolean sendEmail(String to, String title, String body) { try { JavaMailSender javaMailSender = buildMailSender(); MimeMessage message = javaMailSender.createMimeMessage(); MimeMessageHelper helper = new MimeMessageHelper(message, true, "UTF-8"); helper.setFrom(emailAccount.getFrom()); if (null == to) { logger.error("接收者邮箱错误!"); return false; } helper.setTo(to); helper.setSubject(title); helper.setText(body, true); javaMailSender.send(message); logger.info("邮件发送成功..."); return true; } catch (Exception e) { logger.error(String.format("邮件发送 失败 e:{%s}", e)); return false; } } public boolean sendpdfEmail(String[] to, String title, String body, InputStream is) { try { System.getProperties().setProperty("mail.mime.splitlongparameters", "false"); //发送至网易邮箱文件名过长会导致附件变成bin文件 logger.info("邮件发送至:" + to ); for (int i =0;i<to.length;i++) { System.out.println("发送给:"+to[i]); } JavaMailSender javaMailSender = buildMailSender(); MimeMessage message = javaMailSender.createMimeMessage(); MimeMessageHelper helper = new MimeMessageHelper(message, true, "UTF-8"); helper.setFrom(emailAccount.getFrom()); if (null == to) { logger.error("接收者邮箱错误!"); return false; } helper.setTo(to); // helper.setCc(emailAccount.getCcs()); //抄送人 helper.setSubject(title); //标题 helper.setText(body, true); //内容 if (is != null){ DataSource source = new ByteArrayDataSource(is, "application/msexcel"); helper.addAttachment(title+".pdf",source); //发送附件 } javaMailSender.send(message); logger.info("邮件发送成功..."); return true; } catch (Exception e) { logger.error(String.format("邮件发送传失败 e:{%s}", e)); return false; } } private JavaMailSender buildMailSender() { JavaMailSenderImpl mailSender = new JavaMailSenderImpl(); mailSender.setHost(emailAccount.getHost()); mailSender.setPort(emailAccount.getPort()); mailSender.setUsername(emailAccount.getFrom()); mailSender.setPassword(emailAccount.getPassword()); //加认证机制 Properties javaMailProperties = new Properties(); javaMailProperties.put("mail.smtp.auth", "true"); javaMailProperties.put("mail.smtp.ssl.enable", emailAccount.getEnableSSL()); mailSender.setJavaMailProperties(javaMailProperties); logger.info("发送邮件配置信息:{}", mailSender.getHost() + "," + mailSender.getPort() + "," + mailSender.getUsername() + "," + mailSender.getPassword()); return mailSender; } }
6、emailconfig 主要初始化邮箱ip port 等的properties配置文件
package com.fyun.tewebcore.config; import com.fyun.common.utils.NotifyService; import com.fyun.common.utils.impl.DefaultNotifyService; import com.fyun.common.utils.model.EmailModel; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.PropertySource; @Configuration @PropertySource(value = "classpath:config/email-${spring.profiles.active:dev}.properties") public class EmailConfig { @Value("${email.host}") private String host; @Value("${email.port}") private Integer port; @Value("${email.enableSSL}") private Boolean enableSSL; @Value("${email.from}") private String from; @Value("${email.password}") private String password; @Bean public NotifyService notifyService() { EmailModel account = new EmailModel(); account.setHost(host); account.setPort(port); account.setEnableSSL(enableSSL); account.setFrom(from); account.setPassword(password); return new DefaultNotifyService(account); } }
扫描二维码关注公众号,回复:
10153583 查看本文章