且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

Java 发送邮件

更新时间:2022-08-22 10:25:07

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/hxdeng/article/details/52351822

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 介绍

  1. Spring的邮件发送的核心是MailSender接口,在Spring3.0中提供了一个实现类JavaMailSenderImpl,这个类是发送邮件的核心类。
  2. Spring提供的邮件发送不仅支持简单邮件的发送、添加附件,而且还可以使用velocity模板控制页面样式

3.2 Spring发送邮件步骤

  1. 添加jar包
  2. 创建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

附件:代码地址:http://git.oschina.net/hxxiaodao/JavaMail