使用 Java 发送邮件
在我们的应用程序中有时需要给用户发送邮件,例如激活邮件、通知邮件等等。那么如何使用 Java 来给用户发送邮件呢?
使用 java 代码发送邮件
使用工具类发送邮件
使用Spring进行整合发送邮件
发送带附件的邮件
一.使用 Java 代码发送邮件
第一步:导入依赖坐标
<!-- Javamail -->
<dependency>
<groupId>javax.mail</groupId>
<artifactId>mail</artifactId>
<version>1.4.4</version>
</dependency>
第二步:编写 Java 代码发送邮件
/**
* java程序发送邮件
* @author Mr.song
* @date 2019/05/24 16:17
*/
public class JavaMail {
public static void main(String[] args) throws Exception {
//1.配置发送邮件的属性
Properties properties = new Properties();
properties.setProperty("mail.smtp.host", "localhost"); //设置协议主机
properties.setProperty("mail.smtp.auth", "true"); //设置smtp是否需要认证
//2.根据属性获得一个会话
Session session = Session.getInstance(properties);
//3.设置会话是debug模式(会打印更多相关信息)
session.setDebug(true);
//4.创建邮件主题信息对象
MimeMessage message = new MimeMessage(session);
//5.设置发件人
message.setFrom(new InternetAddress("dintalk@sh.com"));
//6.设置邮件主题
message.setSubject("我的第一份java邮件");
//7.设置邮件正文
message.setText("第一份邮件发送成功了,哈哈");
//8.设置收件人: TO-发送 CC-抄送 BCC-密送
message.setRecipient(Message.RecipientType.TO, new InternetAddress("talkdin@sh.com"));
//9.获取发送器对象:提供指定的协议
Transport transport = session.getTransport("smtp");
//10.设置发件人的信息
transport.connect("localhost", "dintalk", "123456");
//11.发送邮件
transport.sendMessage(message, message.getAllRecipients());
//12.关闭资源
transport.close();
}
}
二.使用工具类发送邮件
第一步:导入依赖坐标(同 上)
第二步:抽取工具类
/**
* @author Mr.song
* @date 2019/05/24 16:53
*/
public class MailUtil {
/**
* 工具类发送邮件的方法里,发件邮箱的信息是固定的
* @param map : 收件地址和发送类型 (地址作 key)
* @param subject : 邮件的主题
* @param content : 邮件的正文
* @throws MessagingException
*/
public static void sendMail(Map<String,String>map,String subject,String content)
throws MessagingException {
//1.配置发送邮件的属性
Properties properties = new Properties();
properties.setProperty("mail.smtp.host","localhost"); //设置协议主机
properties.setProperty("mail.smtp.auth","true"); //设置smtp是否需要认证
//2.根据属性获得一个会话
Session session = Session.getInstance(properties);
//3.设置会话是debug模式(会打印更多相关信息,生产环境可设为false)
session.setDebug(true);
//4.创建邮件主题信息对象
MimeMessage message = new MimeMessage(session);
//5.设置发件人
message.setFrom(new InternetAddress("dintalk@sh.com"));
//6.设置邮件主题
message.setSubject(subject);
//7.设置邮件正文
message.setText(content);
//8.设置收件人: TO-发送 CC-抄送 BCC-密送
for (Map.Entry<String, String> me : map.entrySet()) {
String email = me.getKey(); //邮件地址
String type = me.getValue(); //邮件类型
if ("to".equalsIgnoreCase(type)){
//发送
message.setRecipient(Message.RecipientType.TO,new InternetAddress(email));
}else if ("cc".equalsIgnoreCase(type)){
//抄送
message.setRecipient(Message.RecipientType.CC,new InternetAddress(email));
}else if ("bcc".equalsIgnoreCase(type)){
//密送
message.setRecipient(Message.RecipientType.BCC,new InternetAddress(email));
}
}
//9.获取发送器对象:提供指定的协议
Transport transport = session.getTransport("smtp");
//10.设置发件人的信息
transport.connect("localhost","dintalk","123456");
//11.发送邮件
transport.sendMessage(message,message.getAllRecipients());
//12.关闭资源
transport.close();
}
}
第三步:发送邮件
/**
* 使用工具类发送邮件
* @author Mr.song
* @date 2019/05/24 16:47
*/
public class UtilMail {
public static void main(String[] args) throws Exception{
Map<String,String> map = new HashMap<>();
map.put("din@sh.com","to");
map.put("talk@sh.com","cc");
map.put("talkdin@sh.com","bcc");
MailUtil.sendMail(map,"我的第二封邮件","使用工具类发送邮件....");
}
}
三.整合Spring进行邮件发送
第一步:导入依赖坐标
<!-- Javamail -->
<dependency>
<groupId>javax.mail</groupId>
<artifactId>mail</artifactId>
<version>1.4.4</version>
</dependency>
<!--整合spring坐标-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context-support</artifactId>
<version>5.0.4.RELEASE</version>
</dependency>
第二步:编写发件方邮箱配置文件(mail.properties)
#设置发件方邮箱地址
mail.from=dintalk@sh.com
#设置协议主机
mail.host=localhost
#设置发件方用户名
mail.username=dintalk
#设置发件方密码
mail.password=123456
#设置邮件编码格式
mail.encoding=UTF-8
#设置邮件发送协议
mail.protocol=smtp
第三步:编写mail的Spring配置文件( applicationContext-mail.xml )
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd">
<!-- 1.指定引入其他资源文件.properties文件 -->
<context:property-placeholder location="classpath:mail.properties"/>
<!-- 2.配置简单邮件消息对象 -->
<bean id="mailMessage" class="org.springframework.mail.SimpleMailMessage">
<!-- 此时我们只需要注入发件箱名称即可。不要注入主题,正文,收件箱等不固定的信息 -->
<property name="from" value="${mail.from}"></property>
</bean> <!-- 3.配置邮件发送器 -->
<bean id="mailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl">
<property name="host" value="${mail.host}"></property>
<property name="username" value="${mail.username}"></property>
<property name="password" value="${mail.password}"></property>
<property name="defaultEncoding" value="${mail.encoding}"></property>
<property name="protocol" value="${mail.protocol}"></property>
<property name="javaMailProperties">
<props>
<!-- 是否需要验证 -->
<prop key="mail.smtp.auth">true</prop>
<!-- 是否需要debug的信息 -->
<prop key="mail.debug">true</prop>
<!-- 设置发送超时时间,以秒为单位。0为永不超时 -->
<prop key="mail.smtp.timeout">0</prop>
</props>
</property>
</bean>
</beans>
第四步:发送邮件
/**
* 整合Spring的邮件发送
* @author Mr.song
* @date 2019/05/24 17:07
*/
public class SpringMail { public static void main(String[] args) throws MessagingException {
//1.获取Spring容器
ApplicationContext ac = new ClassPathXmlApplicationContext
("classpath:applicationContext-mail.xml");
//2.获取消息对象
SimpleMailMessage mailMessage = (SimpleMailMessage) ac.getBean("mailMessage");
//3.设置邮件的主题
mailMessage.setSubject("Spring整合javamail");
//4.设置邮件的内容,和收件人信息
mailMessage.setText("Spring整合javamail成功");
mailMessage.setTo("din@sh.com","talk@sh.com");
mailMessage.setCc("talkdin@sh.com");
//5.获取邮件发送对象
JavaMailSenderImpl mailSender = (JavaMailSenderImpl) ac.getBean("mailSender");
//6.发送邮件
mailSender.send(mailMessage);
}
}
四.发送带附件的邮件(在整合Spring的基础上)
编写带附件的邮件
/**
* 发送带附件的邮件
* @author Mr.song
* @date 2019/05/24 17:35
*/
public class AttachmentMail {
public static void main(String[] args) throws MessagingException {
//1.获取spring的容器
ApplicationContext ac = new ClassPathXmlApplicationContext
("classpath:applicationContext-mail.xml");
//2.获取发送器对象(spring提供的)
JavaMailSenderImpl sender = (JavaMailSenderImpl) ac.getBean("mailSender");
//3.获取MimeMessage
MimeMessage mailMessage = sender.createMimeMessage();
//4.创建spring提供的复杂邮件的帮助对象
MimeMessageHelper helper = new MimeMessageHelper(mailMessage, true);
//5.设置发件人邮箱
helper.setFrom("dintalk@sh.com");
//6.设置邮件的收件人
helper.setTo("din@sh.com");
//7.设置邮件的主题
helper.setSubject("带有附件和图片的邮件");
//8.设置邮件的正文
helper.setText("<html><head></head><body><h1>这是一封带有附件和图片的邮件</h1><img src=cid:image></body></html>", true);
//9.设置图片
FileSystemResource resource = new FileSystemResource(new File("C:\\Users\\Administrator\\Desktop\\1.png"));
//10.使用图片替换cid (cid是规定的,只能用cid)
helper.addInline("image", resource);
//11.设置附件
helper.addAttachment("1.png", resource);
//12.发送邮件
sender.send(mailMessage);
}
}
关注微信公众号,随时随地学习

使用 Java 发送邮件的更多相关文章
- Java发送邮件初窥
一.背景 最近朋友的公司有用到这个功能,之前对这一块也不是很熟悉,就和他一起解决出现的异常的同时,也初窥一下使用Apache Common Email组件进行邮件发送. 二.Java发送邮件的注意事项 ...
- Java发送邮件,所遇到的常见需求
明天要做关于发送邮件的接口,虽然我之前已用Java Mail做过许多关于邮件的发送.但同事说有点难点,虽我还不知难点在哪,还是要复习下.凡事预则立,不预则废嘛~ 所需的包: Java Mail : 目 ...
- 用java发送邮件(黄海已测试通过)
/** * java发送带附件的邮件 * 周枫 * 2013.8.10 */ package com.dsideal.Util; import javax.mail.*; import javax.m ...
- Java发送邮件(带附件)
实现java发送邮件的过程大体有以下几步: 准备一个properties文件,该文件中存放SMTP服务器地址等参数. 利用properties创建一个Session对象 利用Session创建Mess ...
- 用Java发送邮件
要用Java发送邮件,除过JDK本身的jar包之外,还需要两个额外的jar包:JavaMail和JAF.当然,如果你使用的JavaEE的JDK,那就不用单独去网上下载了,因为JavaEE的JDK中已经 ...
- Java发送邮件时标题和发件人乱码
最近碰到一个问题,Java发送邮件时,查看邮箱结果,发件人及邮件标题正文全部乱码 通过翻阅资料,原因及解决方法如下: // Set Subject: 头字段 message.setSubject(Mi ...
- Java - 31 Java 发送邮件
Java 发送邮件 使用Java应用程序发送E-mail十分简单,但是首先你应该在你的机器上安装JavaMail API 和Java Activation Framework (JAF) . 你可以在 ...
- Java-Runoob-高级教程:Java 发送邮件
ylbtech-Java-Runoob-高级教程:Java 发送邮件 1.返回顶部 1. Java 发送邮件 使用Java应用程序发送 E-mail 十分简单,但是首先你应该在你的机器上安装 Java ...
- Java发送邮件--web.xml配置,Java代码配置
前言:我目前总结的使用java发送邮件的方式有两种,分别是在spring框架xml配置文件使用bean标签,另一种方法是把发送功能封装成一个对象,废话不多说上代码, 边看代码边讲解,希望对需要的人能有 ...
- Java发送邮件示例
利用Java发送邮件示例: 1.发送QQ邮件 import java.util.Properties; import javax.mail.Message; import javax.mail.Mes ...
随机推荐
- 3.2.1 配置构建Angular应用——简单的笔记存储应用——编辑功能
本节我们会接着上节课的内容,继续来完成使用Angular来创建简单的笔记存储应用,上一节课,我们完成了笔记的展示功能,本节课,我们来完成编辑功能. 编辑主要是两个功能:编辑现有的笔记以及创建新笔记.首 ...
- HDUJ 1203 I NEED A OFFER!
I NEED A OFFER! Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) ...
- 3.NetDh框架之缓存操作类和二次开发模式简单设计(附源码和示例代码)
前言 NetDh框架适用于C/S.B/S的服务端框架,可用于项目开发和学习.目前包含以下四个模块 1.数据库操作层封装Dapper,支持多种数据库类型.多库实例,简单强大: 此部分具体说明可参考博客: ...
- windows内存管理的机制以及优缺点
分页存储管理基本思想:用户程序的地址空间被划分成若干固定大小的区域,称为“页”,相应地,内存空间分成若干个物理块,页和块的大小相等.可将用户程序的任一页放在内存的任一块中,实现了离散分配. 分段存储管 ...
- 针对OpenSSL吐嘈的吐嘈-如此唱反调
前些天写了一篇<令人作呕的OpenSSL>,顿时引来了大量的恶评.令我非常尴尬,同一时候也认为悲哀. 假设说you can you up之类的,我认为起码这人看出了我的本意,仅仅是怀疑我的 ...
- Supporting IPv6-only Networks
Supporting IPv6-only Networks - Support - Apple Developer https://developer.apple.com/support/ipv6/ ...
- centOS安装mysql---glibc方式
写在前面: 首先,centos是自己集成mysql的.但是我要用的服务器人家没给装. 其次,centos是可以yum安装mysql的,我很高兴而且轻松的用yum把mysql安装上了.但是,运行的时候很 ...
- linux下的git安装及配置
一.yum安装方式 1.安装 $ yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel $ yum -y ...
- POJ3617:Best Cow Line (贪心&&后缀数组)
FJ is about to take his N (1 ≤ N ≤ 2,000) cows to the annual"Farmer of the Year" competiti ...
- BZOJ2843:极地旅行社(LCT入门题)
不久之前,Mirko建立了一个旅行社,名叫“极地之梦”.这家旅行社在北极附近购买了N座冰岛,并且提供观光服 务.当地最受欢迎的当然是帝企鹅了,这些小家伙经常成群结队的游走在各个冰岛之间.Mirko的旅 ...