1. JavaMail发送邮件
Properties props = new Properties();
// 基本的邮件会话
Session session = Session.getInstance(props);
// 启用调试模式
session.setDebug(true);
// 构建一封邮件
Message msg = new MimeMessage(session);
// -----------------------构建邮件的核心四要素-----------------------------------
// 构建发送者地址
Address fromAddres = new InternetAddress("发送者邮件地址");
// 设置发送者邮箱地址
msg.setFrom(fromAddres);
// 设置接受邮箱地址[Message.RecipientType.TO 正常发送,Message.RecipientType.CC
// 抄送,Message.RecipientType.BCC 密送]
msg.setRecipient(Message.RecipientType.TO, new InternetAddress("接受邮件地址"));
// 构建邮件正文和主题
// 设置主题
msg.setSubject("【重要】JavaMail邮件测试");
// 设置内容
msg.setText("你好,javaMail邮件测试。");
// -----------------------构建邮件的核心四要素-----------------------------------
// 设置邮件有那台服务器发送
// 创建邮件传输者
Transport transport = session.getTransport("smtp");
// 连接服务器
transport.connect("smtp.sina.com", "发送邮件的邮件地址", "发送邮件的密码");
// 将邮件的正文添加到发送的服务器中
// 发送邮件
transport.sendMessage(msg, msg.getAllRecipients());
// 释放资源
transport.close();
注意:Jar包问题 [javax.mail.jar]
2. Apache Mail 发送邮件
2.1 发送简单邮件
// 创建简单邮件对象
SimpleEmail mail = new SimpleEmail();
// 开启DeBug模式
mail.setDebug(true);
// 设置服务器地址
mail.setHostName("smtp.sina.com");
// 设置发送者邮箱地址及密码[认证发送邮件是否正确]
mail.setAuthentication("发送者邮箱", "发送者邮箱密码");
// 设置编码格式
mail.setCharset("UTF-8");
// 设置发送者
mail.setFrom("发送这邮箱地址");
// 接受邮箱帐号
mail.addTo("邮箱帐号");
// 设置主题
mail.setSubject("Apache Mail 自动发送的邮件");
// 设置正文
mail.setMsg("邮件自动发送,无需理会。。。");
// 发送
mail.send();
System.out.println("邮件发送完成...");
2.2 发送HTML邮件
//创建HTMl邮件对象
HtmlEmail mail = new HtmlEmail();
mail.setDebug(true);
mail.setHostName("smtp.sina.com");
mail.setAuthentication("帐号", "密码");
mail.setCharset("UTF-8");
mail.setFrom("发送者地址");
mail.addTo("接受地址");
//设置主题和正文
mail.setSubject("Apache HTML Mail");
mail.setHtmlMsg("<div style='color:red;font-size:36px'>这是一封html邮件<br/><a href='http://www.baidu.com' target='_blank'>百度</a></div>");
//发送
mail.send();
2.3 发送HTML邮件包含图片
HtmlEmail mail = new HtmlEmail();
mail.setDebug(true);
mail.setCharset("utf-8");
mail.setHostName("smtp.sina.com");
mail.setAuthentication(userName, password);
mail.setFrom("发送者邮箱地", "名称");
mail.addTo("接受者邮箱地址");
mail.setSubject("包含图片的HTML邮件2");
String filePath = mail.embed(new File("D:\\004 素材\\wKioL1XeaK6CmWwiAAAzWUvqCMY507.jpg"));
mail.setHtmlMsg("<div style='color:red;'>图片<br/><img src='cid:" + filePath + "' /></div>");
mail.send();
2.4 发送带附件的简单邮件
MultiPartEmail mail = new MultiPartEmail();
mail.setDebug(true);
mail.setCharset("utf-8");
mail.setHostName("smtp.sina.com");
mail.setAuthentication("帐号", "密码");
mail.setFrom("发送邮件地址");
mail.addTo("接受邮件地址");
mail.setSubject("包含附件的邮件");
mail.setMsg("正文,请看附件");
EmailAttachment achment = new EmailAttachment();
achment.setPath("D:\\004 素材\\201501051032.jpg");
// 字符串传入的是附件的名[包含后缀]
achment.setName(MimeUtility.encodeText("201501051032.jpg"));
mail.attach(achment);
mail.send();
2.5 发送带附件的HTML邮件
HtmlEmail mail = new HtmlEmail();
mail.setDebug(true);
mail.setCharset("utf-8");
mail.setHostName("smtp.sina.com");
mail.setAuthentication("帐号", "密码");
mail.setFrom("发送邮件地址");
mail.addTo("接受邮件地址");
mail.setSubject("HTML邮件及附件");
String cid = mail.embed(new File("D:\\004 素材\\wKioL1XeaK6CmWwiAAAzWUvqCMY507.jpg"));
mail.setHtmlMsg("<div style='color:red;'>图片<br/><img src='cid:" + cid + "' /></div>");
EmailAttachment achment = new EmailAttachment();
achment.setPath("D:\\004 素材\\u=2118649485,2729242940&fm=21&gp=0.jpg");
achment.setName(MimeUtility.encodeText("u=2118649485,2729242940&fm=21&gp=0.jpg"));
mail.attach(achment);
mail.send();
注意: 添加jar包[commons-email-1.4.jar]
3. Spring 发送邮件
3.1 介绍
- Spring的邮件发送的核心是MailSender接口,在Spring3.0中提供了一个实现类JavaMailSenderImpl,这个类是发送邮件的核心类。
- Spring提供的邮件发送不仅支持简单邮件的发送、添加附件,而且还可以使用velocity模板控制页面样式
3.2 Spring发送邮件步骤
- 添加jar包
- 创建JavaMailSenderImpl对象,并在构造方法中初始化(也可以使用IoC容器初始化)
private JavaMailSenderImpl mailSender;
public SpringMailSender() {
// 初始化JavaMailSenderImpl,当然推荐在spring配置文件中配置
mailSender = new JavaMailSenderImpl();
// 设置参数
mailSender.setHost("smtp.sina.com");
mailSender.setUsername("发送邮件地址");
mailSender.setPassword("发送邮件的登录密码");
}
3.3 发送一封简单邮件
/**
* 简单邮件发送
*/
public void simpleSend() {
SimpleMailMessage smm = new SimpleMailMessage();
smm.setFrom(mailSender.getUsername());
smm.setTo("接受这邮件地址");
smm.setSubject(“Hello!");
smm.setText("Hello你还好吗?");
mailSender.send(smm);
}
3.4 发送一封HTML邮件
public void sendHtml() throws MessagingException {
MimeMessage msg = mailSender.createMimeMessage();
MimeMessageHelper helper = new MimeMessageHelper(msg, true,"utf-8");
helper.setFrom(mailSender.getUsername());
helper.setTo("接受邮件地址");
helper.setSubject("Hello");
// 第二个参数true,表示text的内容为html
//然后注意<img/>标签,src='cid:file','cid'是contentId的缩写,'file'是一个标记,需要在后面的代码中调用MimeMessageHelper的addInline方法替代成文件
helper.setText("<body><p style='color:red;'>Hello 你好吗?</p><img src='cid:file'/></body>", true);
FileSystemResource file = new FileSystemResource("C:\\Users\\Public\\Pictures\\Sample Pictures\\Chrysanthemum.jpg");
// src='cid:别名'
// helper.addInline("图片的别名", 图片资源对象);
helper.addInline("file", file);
mailSender.send(msg);
}
3.5 发送一封带附件的邮件
// 使用JavaMail的MimeMessage,支付更加复杂的邮件格式和内容
MimeMessage msg = mailSender.createMimeMessage();
// 创建MimeMessageHelper对象,处理MimeMessage的辅助类
MimeMessageHelper helper = new MimeMessageHelper(msg, true);
// 使用辅助类MimeMessage设定参数
helper.setFrom(mailSender.getUsername());
helper.setTo("接受邮件地址");
helper.setSubject"Hello!!!");
helper.setText("邮件正文");
// 加载文件资源,作为附件
ClassPathResource file = new ClassPathResource("Chrysanthemum.jpg");
// 加入附件
helper.addAttachment(MimeUtility.encodeWord(file2.getFilename()), file);
ClassPathResource file2 = new ClassPathResource("test.doc");
helper.addAttachment(MimeUtility.encodeWord(file2.getFilename()), file2);
// 发送邮件
mailSender.send(msg);
}
注意: jar包问题
commons-logging-1.1.1.jar
log4j-1.2.17.jar
org.springframework.aop-3.1.1.RELEASE.jar
org.springframework.asm-3.1.1.RELEASE.jar
org.springframework.beans-3.1.1.RELEASE.jar
org.springframework.context-3.1.1.RELEASE.jar
org.springframework.context.support-3.1.1.RELEASE.jar
org.springframework.core-3.1.1.RELEASE.jar
org.springframework.expression-3.1.1.RELEASE.jar