1.邮箱授权,获取授权码
代码展示:
pom.xml
<dependency> <groupId>org.slf4j</groupId> <artifactId>log4j-over-slf4j</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-mail</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-freemarker</artifactId> </dependency>
MailSenderParams.java
package top.xzhand.mail; import lombok.Data; import java.io.File; import java.util.ArrayList; import java.util.List; import java.util.Map; /** * @Description: * @Author: xiazhong * @Date: 2019/6/22 */ @Data public class MailSenderParams { private String mailTo;//收件人 private String title;//邮件标题 private String content;//邮件内容 private List<File> attachments=new ArrayList<>();//附件 private String templateFile;//模板文件 private String template; /** * 模板的参数集 */ private Map<String, Object> templateModels; }
MailSender.java
package top.xzhand.mail; import freemarker.template.Template; import org.apache.log4j.Logger; import org.springframework.core.io.FileSystemResource; import org.springframework.mail.javamail.JavaMailSender; import org.springframework.mail.javamail.JavaMailSenderImpl; import org.springframework.mail.javamail.MimeMessageHelper; import org.springframework.ui.freemarker.FreeMarkerTemplateUtils; import org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer; import javax.mail.MessagingException; import javax.mail.internet.InternetAddress; import javax.mail.internet.MimeMessage; import javax.mail.internet.MimeUtility; import java.io.File; import java.util.List; import java.util.Properties; ; /** * @Description: 邮件发送服务 * @Author: xiazhong * @Date: 2019/6/22 */ public class MailSender { private Logger logger= Logger.getLogger(this.getClass()); private JavaMailSender javaMailSender; private FreeMarkerConfigurer freeMarkerConfigurer; private String name; private String from; public String getName() { return name; } public void setName(String name) { this.name = name; } public String getFrom() { return from; } public void setFrom(String from) { this.from = from; } public Logger getLogger() { return logger; } public void setLogger(Logger logger) { this.logger = logger; } public JavaMailSender getJavaMailSender() { return javaMailSender; } public void setJavaMailSender(JavaMailSender javaMailSender) { this.javaMailSender = javaMailSender; } public FreeMarkerConfigurer getFreeMarkerConfigurer() { return freeMarkerConfigurer; } public void setFreeMarkerConfigurer(FreeMarkerConfigurer freeMarkerConfigurer) { this.freeMarkerConfigurer = freeMarkerConfigurer; } public MailSender(){ logger.info("初始化邮件组件"); } /** * 发送邮件 */ public void sendSimpleMail(MailSenderParams params){ MimeMessage message=null; try{ message=javaMailSender.createMimeMessage(); MimeMessageHelper helper=new MimeMessageHelper(message,true); helper.setFrom(new InternetAddress(this.getFrom() ,MimeUtility.encodeText(this.name,"UTF-8","B"))); helper.setTo(params.getMailTo()); helper.setSubject(params.getTitle()); helper.setText(params.getContent(), false); }catch (Exception e){ throw new RuntimeException("发送邮件异常! from: " + name+ "! to: " + params.getMailTo()); } javaMailSender.send(message); } public void sendHtmlMail(MailSenderParams params){ MimeMessage message=null; try{ message=javaMailSender.createMimeMessage(); MimeMessageHelper helper=new MimeMessageHelper(message,true); //helper.setFrom(new InternetAddress(this.getFrom() ,MimeUtility.encodeText(this.name,"UTF-8","B"))); helper.setTo(params.getMailTo()); helper.setSubject(params.getTitle()); helper.setText(params.getContent(), true); }catch (Exception e){ throw new RuntimeException("发送邮件异常! from: " + name+ "! to: " + params.getMailTo()); } javaMailSender.send(message); } /** * 发送带附件的邮件 * @param params */ public void sendAttachmentMail(MailSenderParams params){ MimeMessage message=null; try{ message=javaMailSender.createMimeMessage(); MimeMessageHelper helper=new MimeMessageHelper(message,true); helper.setFrom(new InternetAddress(this.getFrom() ,MimeUtility.encodeText(this.name,"UTF-8","B"))); helper.setTo(params.getMailTo()); helper.setSubject(params.getTitle()); helper.setText(params.getContent(), true); }catch (Exception e){ throw new RuntimeException("发送邮件异常! from: " + name+ "! to: " + params.getMailTo()); } javaMailSender.send(message); } /** * 发送模板邮件 */ public void sendTemplateMail(MailSenderParams params) { MimeMessage message = null; try { message = javaMailSender.createMimeMessage(); MimeMessageHelper helper = new MimeMessageHelper(message, true); helper.setFrom(new InternetAddress(this.getFrom(), MimeUtility.encodeText(this.name,"UTF-8", "B"))); helper.setTo(params.getMailTo()); helper.setSubject(params.getTitle()); this.addAttachment(helper,params); Template template = freeMarkerConfigurer.getConfiguration().getTemplate(params.getTemplateFile()); String html = FreeMarkerTemplateUtils.processTemplateIntoString(template, params.getTemplateModels()); helper.setText(html, true); } catch (Exception e) { throw new RuntimeException("发送邮件异常! from: " + name + "! to: " + params.getMailTo()); } javaMailSender.send(message); } /** * 添加附件 * @param helper * @param params * @throws MessagingException */ private void addAttachment(MimeMessageHelper helper, MailSenderParams params) throws MessagingException { if(params.getAttachments() != null){ List<File> attachments = params.getAttachments(); for (File file:attachments){ FileSystemResource attachment = new FileSystemResource(file); helper.addAttachment(file.getName(), file); } } } // public static void main(String[] args) { // // JavaMailSenderImpl js=new JavaMailSenderImpl(); // js.setHost("smtp.qq.com"); // js.setUsername("75284350@qq.com"); // js.setPassword("*****"); // Properties props = new Properties(); // props.put("mail.smtp.auth", true); // props.put("mail.smtp.ssl.enable", true); // props.put("mail.smtp.socketFactory.class","javax.net.ssl.SSLSocketFactory"); // props.put("mail.smtp.timeout", 25000); // js.setJavaMailProperties(props); // MimeMessage message = null; // try { // message = js.createMimeMessage(); // MimeMessageHelper helper = new MimeMessageHelper(message, true); // // helper.setFrom(new InternetAddress(this.getFrom(), MimeUtility.encodeText(this.name,"UTF-8", "B"))); // helper.setFrom("75284350@qq.com"); // helper.setTo("98781255@qq.com"); // helper.setSubject("测试"); // helper.setText("测试内容"); // //addAttachmentStatic(helper,params); // } catch (Exception e) { // e.printStackTrace(); // } // js.send(message); // } }
MailTest.java
import org.springframework.mail.javamail.JavaMailSender; import org.springframework.mail.javamail.JavaMailSenderImpl; import top.xzhand.mail.MailSender; import top.xzhand.mail.MailSenderParams; public class MailTest { public static void main(String[] args) { MailSender mailSender=new MailSender(); JavaMailSenderImpl js=new JavaMailSenderImpl(); js.setHost("smtp.qq.com"); js.setUsername("7528435@qq.com"); js.setPassword("****"); mailSender.setJavaMailSender(js); mailSender.setFrom("7528435@qq.com"); mailSender.setName("7528435"); MailSenderParams params=new MailSenderParams(); params.setMailTo("9878125@qq.com"); params.setTitle("测试邮件"); params.setContent("测试邮件发送"); mailSender.sendSimpleMail(params); } }
原文:https://www.cnblogs.com/notmore/p/12658986.html