通过SpringMail API发送邮件
使用JavaMail API也可以简单的实现发送邮件,当然通过SpringMail来发送也是很简单的。
SpringMail提供了几个API用户发送不同形式的邮件:
- JavaMailSenderImpl:邮件发送器的封装,实现发送者的配置。
- SimpleMailMessage:对邮件的简单封装,只能发送一个纯文本邮件。
- MimeMailMessage:对MIME信件的封装,可以发送html格式的邮件。
- MimeMessageHelper:对MimeMailMessage封装并进行一些处理。
1.maven添加依赖
因为SpringFramework里面已经封装了SpringMail API,所以只要导入javax.mail就行了。
<dependency>
<groupId>javax.mail</groupId>
<artifactId>mail</artifactId>
<version>1.4.1</version>
</dependency>
2.封装一个对象来保存发送者信息
@Entity
@Table(name = "MAIL_SENDER_INFO")
public class MailSenderInfo{
// 用户名
private String username;
// 密码
private String password;
// 主机
private String host;
// 发送者
private String from;
// 抄送
private String cc;
// 密送
private String bcc;
// getter and setter ...
}
3.发送简单的文本邮件
import java.util.Properties;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSenderImpl;
public class SimpleMailSender
{
public void sendEmail((MailSenderInfo mailSenderInfo, String to, String subject, String content)
{
JavaMailSenderImpl senderImpl = new JavaMailSenderImpl();
senderImpl.setHost(mailSenderInfo.getHost());
SimpleMailMessage mailMessage = new SimpleMailMessage();
mailMessage.setTo(to);
mailMessage.setFrom(mailSenderInfo.getFrom());
mailMessage.setSubject(subject);
mailMessage.setText(content);
senderImpl.setUsername(mailSenderInfo.getUsername());
senderImpl.setPassword(mailSenderInfo.getPassword();
Properties prop = new Properties();
prop.put(" mail.smtp.auth ", " true ");
senderImpl.setJavaMailProperties(prop);
senderImpl.send(mailMessage);
}
}
4.发送简单的html格式邮件
public class SimpleMailSender
{
public void sendEmail((MailSenderInfo mailSenderInfo, String to, String subject, String content)
{
JavaMailSenderImpl senderImpl = new JavaMailSenderImpl();
// set mail server
senderImpl.setHost(mailSenderInfo.getHost());
// sreate mail message
MimeMessage mailMessage = senderImpl.createMimeMessage();
// multipart mode, able to send html message
MimeMessageHelper messageHelper = new MimeMessageHelper(mailMessage, true, "utf-8");
// set sender info
messageHelper.setFrom(mailSenderInfo.getFrom());
if (mailSenderInfo.getCc() != null) {
messageHelper.setCc(mailSenderInfo.getCc());
}
if (mailSenderInfo.getBcc() != null) {
messageHelper.setCc(mailSenderInfo.getBcc());
}
messageHelper.setTo(to);
messageHelper.setSubject(subject);
// true to set html enabled
messageHelper.setText("<html><head></head><body><h1>"+ content +"</h1></body></html>", true);
senderImpl.setUsername(mailSenderInfo.getUsername());
senderImpl.setPassword(mailSenderInfo.getPassword());
Properties prop = new Properties();
prop.put("mail.smtp.auth", "true"); // mail server auth username
// password
senderImpl.setJavaMailProperties(prop);
// send email
senderImpl.send(mailMessage);
}
}
5.发送嵌套图片的邮件
public class SimpleMailSender
{
public void sendEmail((MailSenderInfo mailSenderInfo, String to, String subject, String content, String imagePath)
{
JavaMailSenderImpl senderImpl = new JavaMailSenderImpl();
// set mail server
senderImpl.setHost(mailSenderInfo.getHost());
// sreate mail message
MimeMessage mailMessage = senderImpl.createMimeMessage();
// multipart mode, able to send html message
MimeMessageHelper messageHelper = new MimeMessageHelper(mailMessage, true, "utf-8");
// set sender info
messageHelper.setFrom(mailSenderInfo.getFrom());
if (mailSenderInfo.getCc() != null) {
messageHelper.setCc(mailSenderInfo.getCc());
}
if (mailSenderInfo.getBcc() != null) {
messageHelper.setCc(mailSenderInfo.getBcc());
}
messageHelper.setTo(to);
messageHelper.setSubject(subject);
// true to set html enabled
messageHelper.setText("<html><head></head><body><h1>"+ content +"</h1><img src=\"cid:image\"/></body></html>", true);
FileSystemResource img = new FileSystemResource(new File(imagePath));
messageHelper.addInline("image", img);
senderImpl.setUsername(mailSenderInfo.getUsername());
senderImpl.setPassword(mailSenderInfo.getPassword());
Properties prop = new Properties();
prop.put("mail.smtp.auth", "true"); // mail server auth username
// password
senderImpl.setJavaMailProperties(prop);
// send email
senderImpl.send(mailMessage);
}
}
6.发送包含附件的邮件
public class SimpleMailSender
{
public void sendEmail((MailSenderInfo mailSenderInfo, String to, String subject, String content, String filePath)
{
JavaMailSenderImpl senderImpl = new JavaMailSenderImpl();
// set mail server
senderImpl.setHost(mailSenderInfo.getHost());
// sreate mail message
MimeMessage mailMessage = senderImpl.createMimeMessage();
// multipart mode, able to send html message
MimeMessageHelper messageHelper = new MimeMessageHelper(mailMessage, true, "utf-8");
// set sender info
messageHelper.setFrom(mailSenderInfo.getFrom());
if (mailSenderInfo.getCc() != null) {
messageHelper.setCc(mailSenderInfo.getCc());
}
if (mailSenderInfo.getBcc() != null) {
messageHelper.setCc(mailSenderInfo.getBcc());
}
messageHelper.setTo(to);
messageHelper.setSubject(subject);
// true to set html enabled
messageHelper.setText("<html><head></head><body><h1>"+ content +"</h1></body></html>", true);
FileSystemResource img = new FileSystemResource(new File(filePath));
messageHelper.addAttachment("attachment.txt", file);
senderImpl.setUsername(mailSenderInfo.getUsername());
senderImpl.setPassword(mailSenderInfo.getPassword());
Properties prop = new Properties();
prop.put("mail.smtp.auth", "true"); // mail server auth username
// password
senderImpl.setJavaMailProperties(prop);
// send email
senderImpl.send(mailMessage);
}
}
本文介绍了如何利用SpringMail API进行邮件发送,包括添加maven依赖,封装发送者信息,以及分别发送文本、HTML格式、嵌套图片和包含附件的邮件。
9228

被折叠的 条评论
为什么被折叠?



