spring mvc版本
jar包
通过maven引入jar包
<javax.mail.version>1.5.0-b01</javax.mail.version>
<dependency>
<groupId>javax.mail</groupId>
<artifactId>mail</artifactId>
<version>${javax.mail.version}</version>
</dependency>
引入成功后,就可以在代码里面引入
java代码
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
import java.util.List;
/**
* @Project xiangweihui
* @PackageName com.xiangweihui.core.bean
* @ClassName SendEmailMessageBean
* @Author jiahong.xing
* @Date 2019/7/19 11:44
* @Description 发送邮件对象
*/
@ToString
@Getter
@Setter
public class SendEmailMessageBean {
//发送地址
private String toMail;
//标题
private String title;
//发送内容
private String cont;
//文件对象
private List<EmailFileBean> fileList;
//发送备注/作用
private String info;
public SendEmailMessageBean() {
}
public SendEmailMessageBean(String toMail, String title, String cont, String info) {
this.toMail = toMail;
this.title = title;
this.cont = cont;
this.info = info;
}
}
文件对象
import lombok.Getter;
import lombok.Setter;
import java.io.File;
/**
* @Project suishoukai-invoice
* @PackageName com.suishoukai.invoice.core.bean
* @ClassName EmailFileBean
* @Author jiahong.xing
* @Date 2019/5/6 17:57
* @Description 邮件文件对象
*/
@Getter
@Setter
public class EmailFileBean {
//名称
private String name;
//文件
private File file;
}
发送邮件核心代码
/**
* 根据所有信息发送邮件,支持代理,直接发送,不异步
*
* @return
*/
public static void sendEmail(SendEmailMessageBean sendEmailMessageBean) {
//发送地址
String toMail = sendEmailMessageBean.getToMail();
//标题
String title = sendEmailMessageBean.getTitle();
//发送内容
String cont = sendEmailMessageBean.getCont();
// 2017.5.24因为不支持代理改变写法
if (!RegularUtil.testByRegular(toMail, RegularUtil.email_verify)) {
throw new Exceptions("邮件地址格式错误:" + toMail);
}
EmailSetting emailSetting = SettingUtil.getEmailSetting();
//SMTP服务器地址
String smtpHost = emailSetting.getSmtpHost();
//SMTP服务器地址(端口)
String smtpPort = emailSetting.getSmtpPort();
//发件人
String smtpFromMail = emailSetting.getSmtpFromMail();
//SMTP用户名
String smtpUsername = emailSetting.getSmtpUsername();
//SMTP密码
String smtpPassword = emailSetting.getSmtpPassword();
MimeMessage mimeMessage = javaMailSender.createMimeMessage();
try {
javaMailSender.setHost(smtpHost);
javaMailSender.setPort(Integer.parseInt(smtpPort));
javaMailSender.setUsername(smtpUsername);
javaMailSender.setPassword(smtpPassword);
MimeMessageHelper mimeMessageHelper = new MimeMessageHelper(mimeMessage, true, "utf-8");
mimeMessageHelper.setFrom(MimeUtility.encodeWord(emailSetting.getEmail_name()) + " <" + smtpFromMail + ">");
mimeMessageHelper.setSubject(title);
mimeMessageHelper.setTo(toMail);
//处理文件
if (CollectionUtils.isNotEmptyCollection(sendEmailMessageBean.getFileList())) {
for (EmailFileBean emailFileBean : sendEmailMessageBean.getFileList()) {
mimeMessageHelper.addAttachment(emailFileBean.getName(), emailFileBean.getFile());
}
}
mimeMessageHelper.setText(cont, true);
log.info("向" + toMail + "发送了一封邮件,标题为:" + title + ",内容为:" + cont);
javaMailSender.send(mimeMessage);
} catch (Exception e) {
e.printStackTrace();
}
}
这里可以用异步线程或者mq消息异步发送
效果
已完成了邮件发送
springboot版本
需要在Configuration里进行spring注入即可
注入同时加入了静态引用
@Bean
public JavaMailSender javaMailSender() {
JavaMailSender javaMailSender = new JavaMailSenderImpl();
Properties javaMailProperties = new Properties();
javaMailProperties.setProperty("mail.smtp.auth", "true");
javaMailProperties.setProperty("mail.smtp.timeout", "5000");
javaMailProperties.setProperty("mail.smtp.starttls.enable", "false");
javaMailProperties.setProperty("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
((JavaMailSenderImpl) javaMailSender).setJavaMailProperties(javaMailProperties);
return javaMailSender;
}
@PostConstruct
public void init() {
//邮件
JavaMailSenderImpl javaMailSender = (JavaMailSenderImpl) javaMailSender();
EmailUtil.javaMailSender = javaMailSender;
}
调用java代码和上面保持一致的
可以进行线程异步发送和mq消息发送,这两个的使用见以后的文章