介绍

发送邮件是一个很常见的需求,如用户注册,用户密码修改,密码找回等。今天我们看一下使用JavaSE和Spring实现发送邮件的功能。

邮件协议

SMTP协议是基于TCP/IP的一个应用层协议,类似于HTTP,全称为 Simple Mail Transfer Protocol,译作简单邮件传输协议,它定义了邮件客户端软件与SMTP 服务器之间,以及 SMTP 服务器与 SMTP 服务器之间的通信规则。我们通过邮件客户端或程序发送邮件时就用到了该协议。

而 POP3 协议全称为 Post Office Protocol ,译作邮局协议,它定义了邮件客户端与 POP3服务器之间的通信规则。我们通过邮件客户端查看邮件时就用到了该协议。

IMAP(Internet Message Access Protocol)协议是对POP3协议的一种扩展,功能更强,作用类似。

发送前准备

发送前需要获取邮箱的授权码,以网易126邮箱为例

使用JavaSE发送简单邮件

添加maven依赖

com.sun.mail

javax.mail

1.6.2

发送邮件

public class Client {

public static void main(String[] args) throws Exception {

Properties props = new Properties();

//设置邮件地址

props.put("mail.smtp.host", "smtp.126.com");

//开启认证

props.put("mail.smtp.auth", "true");

Session session = Session.getDefaultInstance(props, null);

Transport transport = session.getTransport();

//用户名

String user = "xxx@126.com";

//授权码

String password = "xxx";

transport.connect(user, password);

//创建邮件消息

MimeMessage msg = new MimeMessage(session);

msg.setSentDate(new Date());

//邮件发送人

InternetAddress fromAddress = new InternetAddress(user, "邮件服务");

msg.setFrom(fromAddress);

//邮件接收人

String to = "xxx@163.com";

InternetAddress[] toAddress = new InternetAddress[]{new InternetAddress(to)};

msg.setRecipients(Message.RecipientType.TO, toAddress);

//邮件主题

msg.setSubject("测试邮件发送", "UTF-8");

//邮件内容和格式

msg.setContent("this is a test mail", "text/html;charset=UTF-8");

msg.saveChanges();

//发送

transport.sendMessage(msg, msg.getAllRecipients());

}

}

发送带附件的邮件

public class Client {

public static void main(String[] args) throws Exception {

Properties props = new Properties();

//设置邮件地址

props.put("mail.smtp.host", "smtp.126.com");

//开启认证

props.put("mail.smtp.auth", "true");

Session session = Session.getDefaultInstance(props, null);

Transport transport = session.getTransport();

//用户名

String user = "xxx@126.com";

//授权码

String password = "xxx";

transport.connect(user, password);

//创建邮件消息

MimeMessage msg = new MimeMessage(session);

msg.setSentDate(new Date());

//邮件发送人

InternetAddress fromAddress = new InternetAddress(user, "邮件服务");

msg.setFrom(fromAddress);

//邮件接收人

String to = "xxx@163.com";

InternetAddress[] toAddress = new InternetAddress[]{new InternetAddress(to)};

msg.setRecipients(Message.RecipientType.TO, toAddress);

//邮件主题

msg.setSubject("测试邮件发送", "UTF-8");

//内容和附件

Multipart multipart = new MimeMultipart();

//内容

BodyPart contentBodyPart = new MimeBodyPart();

contentBodyPart.setContent("this also is a test mail", "text/html;charset=UTF-8");

multipart.addBodyPart(contentBodyPart);

//附件

BodyPart fileBody = new MimeBodyPart();

DataSource source = new FileDataSource("D:/a.png");

fileBody.setDataHandler(new DataHandler(source));

fileBody.setFileName("测试附件.png");

multipart.addBodyPart(fileBody);

//邮件内容

msg.setContent(multipart);

msg.saveChanges();

//发送

transport.sendMessage(msg, msg.getAllRecipients());

}

}

使用Spring发送简单邮件

spring在原有的基础上又封装了一层,简化了开发。

org.springframework

spring-context-support

5.1.2.RELEASE

com.sun.mail

javax.mail

1.6.2

public class Client {

public static void main(String[] args) throws Exception {

JavaMailSender mailSender = createJavaMailSender();

//创建邮件消息

MimeMessage mimeMessage = mailSender.createMimeMessage();

MimeMessageHelper messageHelper = new MimeMessageHelper(mimeMessage);

//发送人

messageHelper.setFrom("xxx@126.com", "邮件服务");

//收件人

messageHelper.setTo("xxx@163.com");

//主题

messageHelper.setSubject("测试邮件发送");

//发送时间

messageHelper.setSentDate(new Date());

//发送内容

messageHelper.setText("this is a test mail by spring");

mailSender.send(mimeMessage);

}

private static JavaMailSender createJavaMailSender() {

JavaMailSenderImpl mailSender = new JavaMailSenderImpl();

mailSender.setDefaultEncoding(StandardCharsets.UTF_8.name());

String username = "xxx@126.com";

//设置用户名

mailSender.setUsername(username);

//设置授权码

mailSender.setPassword("xxx");

Properties props = new Properties();

//设置邮件地址

props.put("mail.smtp.host", "smtp.126.com");

//开启认证

props.put("mail.smtp.auth", "true");

mailSender.setJavaMailProperties(props);

return mailSender;

}

}

使用Spring发送带附件的邮件

public class Client {

public static void main(String[] args) throws Exception {

JavaMailSender mailSender = createJavaMailSender();

//创建邮件消息

MimeMessage mimeMessage = mailSender.createMimeMessage();

//multipart为true表示可以带附件

MimeMessageHelper messageHelper = new MimeMessageHelper(mimeMessage, true);

//发送人

messageHelper.setFrom("xxx@126.com", "邮件服务");

//收件人

messageHelper.setTo("xxx@163.com");

//主题

messageHelper.setSubject("测试邮件发送");

//发送时间

messageHelper.setSentDate(new Date());

//发送内容

messageHelper.setText("this is a test mail by spring");

//添加附件

messageHelper.addAttachment("测试附件.png", new FileDataSource("D:/a.png"));

mailSender.send(mimeMessage);

}

private static JavaMailSender createJavaMailSender() {

JavaMailSenderImpl mailSender = new JavaMailSenderImpl();

mailSender.setDefaultEncoding(StandardCharsets.UTF_8.name());

String username = "xxx@126.com";

//设置用户名

mailSender.setUsername(username);

//设置授权码

mailSender.setPassword("xxx");

Properties props = new Properties();

//设置邮件地址

props.put("mail.smtp.host", "smtp.126.com");

//开启认证

props.put("mail.smtp.auth", "true");

mailSender.setJavaMailProperties(props);

return mailSender;

}

}

java smtp.126.com_java实现邮件发送相关推荐

  1. java smtp.126.com_Java Mail---SMTP、POP3协议-DOS下手动收发邮件演示过程

    转载请注明出处: http://blog.csdn.net/qq_26525215 本文源自 E-Mail协议简介: 邮件服务器,按照提供的服务类型,可以分为发送邮件的服务器我接收邮件的服务器. 发送 ...

  2. java smtp.126.com_Java采用SMTP协议发送邮件 | 学步园

    下载后解压,将mail.jar和activation.jar放到project里的lib文件夹中,为其配置环境变量,或在myEclipse里的"Java Build Path"中将 ...

  3. java 发送邮件添加附件,Java实现带附件的邮件发送功能

    这篇文章主要为大家详细介绍了Java实现带附件的邮件发送功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 本文实例为大家分享了Java实现邮件发送功能的具体代码,供大 ...

  4. Java实现多附件的邮件发送

    叙:本文主要记述了 Springboot 中如何集成并实现多附件的邮件发送,以QQ邮箱的服务器为发送邮件的邮件服务器: Java实现多附件的邮件发送 1.前期准备 1.1.获取收发服务器地址及其端口号 ...

  5. qq邮箱格式的Java代码_Java实现QQ邮件发送

    首先我们需要两个jar包,点击下面即可下载这两个包: 我们这里采用QQ邮箱发送邮件为例,代码如下: package ddd; import java.util.Properties; import j ...

  6. Java技术:SpringBoot实现邮件发送功能

    邮件发送功能基本是每个完整业务系统要集成的功能之一,今天小编给大家介绍一下SpringBoot实现邮件发送功能,希望对大家能有所帮助! 今天主要给大家分享简单邮件发送.HTML邮件发送.包含附件的邮件 ...

  7. java 发送邮件_Jenkins实现自动化邮件发送踩坑记录

    文章简介 本文分享Jenkins实现邮件发送,安装Jenkins可参考jenkins安装.写这篇文章,是在实际使用Jenkins过程中遇到这样一个问题,当每次Jenkins构建成功或者失败后,需要个人 ...

  8. java mail 抄送多用户_javaMail邮件发送功能(多收件人,多抄送人,多密送人,多附件)...

    先看源码,再来理解,可以直接使用! JavaMailWithAttachment.java: private MimeMessage message; private Session session; ...

  9. java邮件发送代码_用Java实现最简单的邮件发送代码

    1. import javax.mail.Authenticator; import javax.mail.PasswordAuthentication; /* * 在真正使用创建的过程中,往往会让我 ...

  10. java EE 5配置邮件发送 qq企业邮箱

    为什么80%的码农都做不了架构师?>>>    java EE 5配置QQ企业邮件发送 1.在项目的WebRoot/META-INF/新建context.xml 具体内容如下: &l ...

最新文章

  1. 为什么校招面试中总被问“线程与进程的区别”?我该如何回答?
  2. 自定义栈-pop-push-min-时间复杂度都为O(1)
  3. Android中怎样使用Navicat可视化查看sqllite的数据库(查看db文件)
  4. 华南理工大学 高级程序设计语言 c++ ,2017华南理工大学网络教育《高级语言程序设计C++》平时作业...
  5. 错误fatal error: curl/curl.h: No such file or directory解决方案
  6. 程序员必收藏的五个网站
  7. Exchange2010恢复已禁用邮箱后用户登录会出错
  8. rust面向对象_面向初学者的Rust操作员综合教程
  9. 【转】chrome浏览器的跨域设置——包括版本49前后两种设置
  10. QT学习笔记(八):顺序容器和关联容器
  11. SecureCRT终端仿真程序下载及安装使用
  12. 转的,程序员如何缓解压力
  13. 你觉得一个128g主力机用几年会到非换不可的程度?
  14. Kafka在Linux下载安装及部署
  15. 基于销售数据的决策支持系统的设计与实现源码论文
  16. FPGA零基础学习:UART协议驱动设计
  17. 笔记本安装PCMCIA并口卡
  18. 前端应届简历应该怎么写?
  19. quartz表删除顺序
  20. 拷贝控制示例——Message和Folder

热门文章

  1. 如何修复win7蓝牙服务器,win7系统查看蓝牙的修复办法
  2. 键入一个字母,如果小写字母输出大写,大写字母输出小写字母
  3. Web 服务器配置和管理
  4. 屏蔽网站、网页和弹窗的方法
  5. 第七章 逻辑回归 - 多元逻辑回归
  6. 跨网段共享服务器文件夹,跨网段文件共享
  7. Ubuntu设置Adsl上网
  8. matlab 折射率椭球,折射率椭球详解.ppt
  9. 图像处理之阈值分割[全局阈值、Otsu阈值和迭代式阈值分割]
  10. pinia - 大菠萝的使用