发送邮件配置
ssm配置
依赖
<dependency>
<groupId>javax.mail</groupId>
<artifactId>mail</artifactId>
<version>1.4.7</version>
</dependency>
project.properties配置
email.host=${接口}
email.username=${用户名}
email.password=${密码或授权码}
xml配置
加载配置文件
<bean id="propertyConfigurer"
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations">
<list>
<value>classpath:/project.properties</value>
</list>
</property>
</bean>
<bean name="javaMailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl">
<property name="host" value="${email.host}" />
<property name="defaultEncoding" value="UTF-8"></property>
<property name="port" value="465"></property>
<property name="username" value="${email.username}"></property>
<property name="password" value="${email.password}"></property>
<property name="javaMailProperties">
<props>
<prop key="mail.smtp.auth">true</prop>
<prop key="mail.smtp.starttls.enable">true</prop>
<prop key="mail.smtp.socketFactory.port">465</prop>
<prop key="mail.smtp.socketFactory.class">javax.net.ssl.SSLSocketFactory</prop>
<prop key="mail.smtp.socketFactory.fallback">false</prop>
</props>
</property>
</bean>
测试
@Autowired
private JavaMailSenderImpl javaMailSender;
private static final Log logger = LogFactory.getLog(EmailServiceImpl.class);
@Override
public void sendMail(String mailto, String text, String title) throws Exception {
MimeMessage mimeMessage = javaMailSender.createMimeMessage();
MimeMessageHelper messageHelper = new MimeMessageHelper(mimeMessage, true,
"UTF-8");
messageHelper.setFrom(new InternetAddress(javaMailSender.getUsername()));
messageHelper.setSubject(title);
messageHelper.setText(text, true);
messageHelper.setTo(new InternetAddress(mailto));
mimeMessage = messageHelper.getMimeMessage();
EmailThread et = new EmailThread(mimeMessage);
et.start();
}
@Override
public void sendBatchMail(String[] mailto, String text, String title) {
for (int i = 0; i < mailto.length; i++) {
try {
sendMail(mailto[i], text, title);
} catch (Exception e) {
logger.error("+++ sendBatchMail error email:" + mailto[i]);
}
}
}
public void sendMailWithFile(String mailto, String text, String title,
String[] filePath) throws Exception {
MimeMessage mimeMessage = javaMailSender.createMimeMessage();
MimeMessageHelper messageHelper = new MimeMessageHelper(mimeMessage, true,
"UTF-8");
messageHelper.setFrom(new InternetAddress(javaMailSender.getUsername()));
messageHelper.setSubject(title);
messageHelper.setText(text, true);
messageHelper.setTo(new InternetAddress(mailto));
mimeMessage = messageHelper.getMimeMessage();
if (filePath != null) {
BodyPart mdp = new MimeBodyPart();
mdp.setContent(text, "text/html;charset=UTF-8");
Multipart mm = new MimeMultipart();
mm.addBodyPart(mdp);
MimeBodyPart filePart;
FileDataSource filedatasource;
for (int j = 0; j < filePath.length; j++) {
filePart = new MimeBodyPart();
filedatasource = new FileDataSource(filePath[j]);
filePart.setDataHandler(new DataHandler(filedatasource));
try {
filePart.setFileName(MimeUtility.encodeText(filedatasource.getName()));
} catch (Exception e) {
e.printStackTrace();
}
mm.addBodyPart(filePart);
}
mimeMessage.setContent(mm);
}
EmailThread et = new EmailThread(mimeMessage);
et.start();
}
@Override
public void sendBatchMailWithFile(String[] mailto, String text, String title,
String[] filePath) throws Exception {
MimeMessage mimeMessage = javaMailSender.createMimeMessage();
MimeMessageHelper messageHelper = new MimeMessageHelper(mimeMessage, true,
"UTF-8");
messageHelper.setFrom(new InternetAddress(MimeUtility.encodeText(javaMailSender
.getUsername())));
messageHelper.setSubject(title);
if (filePath != null) {
BodyPart mdp = new MimeBodyPart();
mdp.setContent(text, "text/html;charset=UTF-8");
Multipart mm = new MimeMultipart();
mm.addBodyPart(mdp);
MimeBodyPart filePart;
FileDataSource filedatasource;
for (int j = 0; j < filePath.length; j++) {
filePart = new MimeBodyPart();
filedatasource = new FileDataSource(filePath[j]);
filePart.setDataHandler(new DataHandler(filedatasource));
try {
filePart.setFileName(MimeUtility.encodeText(filedatasource.getName()));
} catch (Exception e) {
e.printStackTrace();
}
mm.addBodyPart(filePart);
}
mimeMessage.setContent(mm);
} else {
messageHelper.setText(text, true);
}
List<InternetAddress> list = new ArrayList<InternetAddress>();
for (int i = 0; i < mailto.length; i++) {
list.add(new InternetAddress(mailto[i]));
}
InternetAddress[] address = list.toArray(new InternetAddress[list.size()]);
mimeMessage.setRecipients(Message.RecipientType.TO, address);
mimeMessage = messageHelper.getMimeMessage();
EmailThread et = new EmailThread(mimeMessage);
et.start();
}
class EmailThread extends Thread {
private final MimeMessage mimeMessage;
public EmailThread(MimeMessage mimeMessage) {
this.mimeMessage = mimeMessage;
}
@Override
public void run() {
javaMailSender.send(mimeMessage);
}
}
springboot配置
依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
配置
spring:
mail:
host: 地址
port: 465
username: 账号
password: 密码
default-encoding: UTF-8
properties:
mail.smtp.auth: true
mail:
smtp:
ssl:
enable: true
mail.smtp.socketFactory.port: 465
mail.smtp.socketFactory.class: javax.net.ssl.SSLSocketFactory
mail.smtp.socketFactory.fallback: false
测试
@Autowired
JavaMailSender javaMailSender;
@RequestMapping("/sendEmail")
public String sendEmail(){
SimpleMailMessage mimeMessage = new SimpleMailMessage();
mimeMessage.setFrom("发信邮箱");
mimeMessage.setText("信息内容");
mimeMessage.setSubject("主题");
mimeMessage.setTo("收信邮箱");
javaMailSender.send(mimeMessage);
return "发送成功";
}