使用,spring-context-support 中JavaMailSenderImpl 实现指定邮箱发送邮件.
1.在resources创建mail.properties文件指定必要参数
#服务器 //这个服务器是可以换的,需要根据发送人的邮箱进行更改,这里使用的是smtp网易的
mailHost=smtp.qiye.163.com
#端口号
mailPort=994
#邮箱账号
mailUsername=zh****nq**g@****.cn
#邮箱授权码
mailPassword=D***55
#时间延迟
mailTimeout=25000
#发送人
mailFrom=zh****nq**g@****.cn
2.创建MailConfig类为创建JavaMailSenderImpl做准备
package com.homolo.mail;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;
@Component
public class MailConfig {
private final static Logger LOGGER =LoggerFactory.getLogger(MailConfig.class);
//文件名称
public static final String PROPERTIES_DEFAULT = "mail.properties";
private static String host;
private static Integer port;
private static String userName;
private static String passWord;
private static String emailForm;
private static String timeout;
private static String personal;
private static Properties properties;
//spring 加载bean执行初始化
static {
init();
}
private static void init() {
setProperties(new Properties());
try {
InputStream inputStream = MailConfig.class.getClassLoader().getResourceAsStream(PROPERTIES_DEFAULT);
getProperties().load(inputStream);
inputStream.close();
setHost(getProperties().getProperty("mailHost"));
setPort(Integer.parseInt(getProperties().getProperty("mailPort")));
setUserName(getProperties().getProperty("mailUsername"));
setPassWord(getProperties().getProperty("mailPassword"));
setEmailForm(getProperties().getProperty("mailFrom"));
setTimeout(getProperties().getProperty("mailTimeout"));
setPersonal("这里是标题");
} catch (IOException e) {
LOGGER.error(e.getMessage(), e);
}
}
public static String getHost() {
return host;
}
public static void setHost(String host) {
MailConfig.host = host;
}
public static Integer getPort() {
return port;
}
public static void setPort(Integer port) {
MailConfig.port = port;
}
public static String getUserName() {
return userName;
}
public static void setUserName(String userName) {
MailConfig.userName = userName;
}
public static String getPassWord() {
return passWord;
}
public static void setPassWord(String passWord) {
MailConfig.passWord = passWord;
}
public static String getEmailForm() {
return emailForm;
}
public static void setEmailForm(String emailForm) {
MailConfig.emailForm = emailForm;
}
public static String getTimeout() {
return timeout;
}
public static void setTimeout(String timeout) {
MailConfig.timeout = timeout;
}
public static String getPersonal() {
return personal;
}
public static void setPersonal(String personal) {
MailConfig.personal = personal;
}
public static Properties getProperties() {
return properties;
}
public static void setProperties(Properties properties) {
MailConfig.properties = properties;
}
}
3.创建mailUtils类,用于邮件发送操作
package com.homolo.mail;
import org.springframework.mail.javamail.JavaMailSenderImpl;
import org.springframework.mail.javamail.MimeMessageHelper;
import org.springframework.stereotype.Component;
import javax.mail.MessagingException;
import javax.mail.internet.MimeMessage;
import java.io.File;
import java.io.UnsupportedEncodingException;
import java.util.Properties;
@Component
public class MailUtils {
private static final String HOST = MailConfig.getHost();
private static final Integer PORT = MailConfig.getPort();
private static final String USERNAME = MailConfig.getUserName();
private static final String PASSWORD = MailConfig.getPassWord();
private static final String emailForm = MailConfig.getEmailForm();
private static final String timeout = MailConfig.getTimeout();
private static final String personal = MailConfig.getPersonal();
//创建JavaMailSenderImpl对象
private static JavaMailSenderImpl mailSender = createMailSender();
private static JavaMailSenderImpl createMailSender() {
JavaMailSenderImpl sender = new JavaMailSenderImpl();
sender.setHost(HOST);
sender.setPassword(PASSWORD);
sender.setPort(PORT);
sender.setUsername(USERNAME);
sender.setDefaultEncoding("Utf-8");
Properties properties = new Properties();
//
properties.put("mail.smtp.ssl.enable", true);
properties.put("mail.smtp.ssl.checkserveridentity", true);
properties.put("mail.smtps.ssl.checkserveridentity", true);
properties.put("mail.transport.protocal", "smtp");
properties.put("mail.smtp.timeout", timeout);
properties.put("mail.smtp.starttls.enable", true);
properties.put("mail.smtp.auth", false);
properties.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
sender.setJavaMailProperties(properties);
return sender;
}
//发送到to,主题,内容,文件
public static int sendAttachmentMail(String to, String subject, String context, File file) {
MimeMessage mimeMessage = mailSender.createMimeMessage();
try {
MimeMessageHelper mimeMessageHelper = new MimeMessageHelper(mimeMessage, true, "UTF-8");
mimeMessageHelper.setFrom(emailForm, personal);
mimeMessageHelper.setTo(to);
mimeMessageHelper.setSubject(subject);
mimeMessageHelper.setText(context);
mimeMessageHelper.addAttachment(file.getName(), file);
mailSender.send(mimeMessage);
} catch (MessagingException | UnsupportedEncodingException e) {
return -1;
}
return 1;
}
}
因篇幅问题不能全部显示,请点此查看更多更全内容