Java 发送邮件

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

版权声明:本文为博主原创文章,未经博主允许不得转载。 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("

这是一封html邮件
百度

"
); //发送 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("

图片

"
); 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("

图片

"
); 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
    //然后注意标签,src='cid:file','cid'是contentId的缩写,'file'是一个标记,需要在后面的代码中调用MimeMessageHelper的addInline方法替代成文件
    helper.setText("

Hello 你好吗?

"
, 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


相关文章
|
7月前
|
Java
有关Java发送邮件信息(支持附件、html文件模板发送)
有关Java发送邮件信息(支持附件、html文件模板发送)
450 1
|
Java 数据安全/隐私保护
使用Java发送邮件的示例
使用Java发送邮件的示例
173 0
|
2月前
|
Java API 网络安全
Java 发送邮件示例
本示例展示了如何使用Java编程语言发送电子邮件。通过利用JavaMail API,这段代码实现了从配置SMTP服务器,设置邮件属性,到发送邮件的全过程,为开发者提供了实用的参考。
159 10
消息中间件 缓存 监控
143 0
|
7月前
|
Java
使用java底层实现邮件的发送(含测试,源码)
使用java底层实现邮件的发送(含测试,源码)
|
5月前
|
Java API Maven
如何在Java中实现邮件发送功能?
如何在Java中实现邮件发送功能?
|
6月前
|
前端开发 Java 网络安全
基于Java Socket实现的SMTP邮件客户端 - 全面支持SSL, TLS
基于Java Socket实现的SMTP邮件客户端 - 全面支持SSL, TLS
65 0
|
7月前
|
Java API 数据安全/隐私保护
【亮剑】如何在Java项目中结合Spring框架实现邮件发送功能
【4月更文挑战第30天】本文介绍了如何在Java项目中结合Spring框架实现邮件发送功能。首先,需在`pom.xml`添加Spring和JavaMail依赖。然后,在`applicationContext.xml`配置邮件发送器,包括SMTP服务器信息。接着,创建一个使用依赖注入的`EmailService`类,通过`JavaMailSender`发送邮件。最后,调用`EmailService`的`sendSimpleEmail`方法即可发送邮件。最佳实践包括:使用配置管理敏感信息,利用`MimeMessage`构造复杂邮件,异常处理和日志记录,以及在大量发送时考虑使用邮件队列。
123 1
|
7月前
|
网络协议 Java API
Java语言发送邮件的技术性详解
Java语言发送邮件的技术性详解
|
7月前
|
Java API 数据安全/隐私保护
Java 发送邮件
5月更文挑战第20天