您的位置:首页 > 编程语言 > Java开发

通过SpringMail API发送邮件

2015-11-10 14:32 501 查看

通过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);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  javamail