Java实现简单邮件发送功能
作者:深蓝梦夕阳 发布时间:2023-08-15 00:53:23
标签:Java,邮件发送
本文实例为大家分享了Java实现简单邮件发送的具体代码,供大家参考,具体内容如下
需要的jar包:
activation-1.1.1.jar
mail-1.4.7.jar
QQ邮箱设置开启POP3/SMTP服务,并获得授权码
java实现简单邮件发送
import com.sun.mail.util.MailSSLSocketFactory;
import javax.mail.*;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import java.util.Properties;
public class Mail1 {
public static void main(String[] args) throws Exception {
//要发送邮件,需要获得协议和支持!开启服务POP3/SMTP服务 授权码: fsxqgovorymigfeb
Properties prop=new Properties();
prop.setProperty("mail.host","smtp.qq.com");//设置QQ邮件服务器
prop.setProperty("mail.transport.protocol","smtp");//设置邮箱发送协议
prop.setProperty("mail.smtp.auth","true");//需要验证用户名密码
//QQ邮箱还有设置SSL加密
MailSSLSocketFactory sf=new MailSSLSocketFactory();
sf.setTrustAllHosts(true);
prop.put("mail.smtp.ssl.enable","true");
prop.put("mail.smtp.ssl.socketFactory",sf);
//1.创建定义整个应用程序所需要的环境信息的Session对象
Session session=Session.getDefaultInstance(prop, new Authenticator() {
@Override
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication("1369410772@qq.com","fsxqgovorymigfeb");
}
});
//开启session的debug模式,这样就可以查看运行状态了
session.setDebug(true);
//2.通过session对象获得transport对象
Transport transport = session.getTransport();
//3.使用邮箱的用户名和授权码连上邮件服务器
transport.connect("smtp.qq.com","1369410772@qq.com","fsxqgovorymigfeb");
//4.创建邮件:写邮件
MimeMessage message = new MimeMessage(session);
message.setFrom(new InternetAddress("1369410772@qq.com"));//发件人
message.setRecipient(Message.RecipientType.TO,new InternetAddress("1369410772@qq.com"));//收件人
message.setSubject("你好");//邮件主题
message.setContent("<h1 style='color: red'>你好</h1>","text/html;charset=utf-8");//邮件内容
//5.发送邮件
transport.sendMessage(message,message.getAllRecipients());
//6.关闭连接
transport.close();
}
}
java实现复杂邮件发送( 带文件 )
import com.sun.mail.util.MailSSLSocketFactory;
import javax.activation.DataHandler;
import javax.activation.FileDataSource;
import javax.mail.*;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;
import java.util.Properties;
public class Mail1 {
public static void main(String[] args) throws Exception {
//要发送邮件,需要获得协议和支持!开启服务POP3/SMTP服务 授权码: fsxqgovorymigfeb
Properties prop=new Properties();
prop.setProperty("mail.host","smtp.qq.com");//设置QQ邮件服务器
prop.setProperty("mail.transport.protocol","smtp");//设置邮箱发送协议
prop.setProperty("mail.smtp.auth","true");//需要验证用户名密码
//QQ邮箱还有设置SSL加密
MailSSLSocketFactory sf=new MailSSLSocketFactory();
sf.setTrustAllHosts(true);
prop.put("mail.smtp.ssl.enable","true");
prop.put("mail.smtp.ssl.socketFactory",sf);
//1.创建定义整个应用程序所需要的环境信息的Session对象
Session session=Session.getDefaultInstance(prop, new Authenticator() {
@Override
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication("1369410772@qq.com","fsxqgovorymigfeb");
}
});
//开启session的debug模式,这样就可以查看运行状态了
session.setDebug(true);
//2.通过session对象获得transport对象
Transport transport = session.getTransport();
//3.使用邮箱的用户名和授权码连上邮件服务器
transport.connect("smtp.qq.com","1369410772@qq.com","fsxqgovorymigfeb");
//4.创建邮件:写邮件
MimeMessage message = new MimeMessage(session);
message.setFrom(new InternetAddress("1369410772@qq.com"));//发件人
message.setRecipient(Message.RecipientType.TO,new InternetAddress("1369410772@qq.com"));//收件人
message.setSubject("你好");//邮件主题
//message.setContent("<h1 style='color: red'>你好</h1>","text/html;charset=utf-8");//邮件内容
//=============================================================================
//带图片的内容
MimeBodyPart image = new MimeBodyPart();
DataHandler dh = new DataHandler(new FileDataSource("E:\\IDEA\\JavaWeb\\mail-java\\src\\tx.png"));//图片需要经过数据处理... DataHandler:数据处理
image.setDataHandler(dh);//在Body中放入处理的图片数据
image.setContentID("tx.png");//给图片设置ID
//准备正文数据
MimeBodyPart text = new MimeBodyPart();
text.setContent("这是一封邮件正文带图片<img src='cid:tx.png'>的邮件","text/html;charset=utf-8");
//描述数据关系
MimeMultipart mm = new MimeMultipart();
mm.addBodyPart(text);
mm.addBodyPart(image);
mm.setSubType("mixed");
//设置到消息中,保存修改
message.setContent(mm);
message.saveChanges();
//=========================================================================
//5.发送邮件
transport.sendMessage(message,message.getAllRecipients());
//6.关闭连接
transport.close();
}
}
Spring实现
1、添加依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
2、编写配置文件
spring.mail.username=1369410772@qq.com
spring.mail.password=fsxqgovorymigfeb
spring.mail.host=smtp.qq.com
spring.mail.properties.mail.smtp.ssl.enable=true
3、编写测试类
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSenderImpl;
import org.springframework.mail.javamail.MimeMessageHelper;
import javax.mail.MessagingException;
import javax.mail.internet.MimeMessage;
import java.io.File;
@SpringBootTest
class DemoApplicationTests {//简单邮件
@Autowired
JavaMailSenderImpl mailSender;
@Test
void contextLoads() {
//发送邮件
//收件人
//内容
SimpleMailMessage message = new SimpleMailMessage();
message.setSubject("测试");
message.setText("Hello");
message.setFrom("1369410772@qq.com");
message.setTo("1369410772@qq.com");
mailSender.send(message);
}
@Test
public void test2() throws Exception {//复杂邮件
MimeMessage mimeMessage = mailSender.createMimeMessage();
MimeMessageHelper helper = new MimeMessageHelper(mimeMessage, true);
helper.setSubject("测试");
helper.setText("Hello",true);
//附件
helper.addAttachment("1.jpg",new File(""));
helper.setFrom("1369410772@qq.com");
helper.setTo("1369410772@qq.com");
mailSender.send(mimeMessage);
}
}
来源:https://blog.csdn.net/LanceLee0/article/details/119324710
![](https://www.aspxhome.com/images/zang.png)
![](https://www.aspxhome.com/images/jiucuo.png)
猜你喜欢
- 库从本质上来说是一种可执行代码的二进制格式,可以被载入内存中执行。库分静态库和动态库两种。 一、静态库和动态库的区别1. 静态函数库这类库的
- 通用配置#下面介绍的整合JDBC和整合MyBatis都需要添加的实体类和配置数据库表#CREATE TABLE `user` ( `id`
- 前言我们在学习Windows应用程序开发中,经常会用到消息对话框给用户或者管理员一些的消息提示,它们都是基于对MessageBox类的消息对
- 公司的老项目要改造多租户,于是进入了大坑,本文写点遇到的坑以及解决方案,每次遇到问题在网上搜了好久,记录下来,防止以后忘掉。(一).方案网上
- 本文实例为大家分享了C语言实现贪吃蛇游戏的具体代码,供大家参考,具体内容如下IDE用的是 VS2019先看效果 代码全览game.
- SpringCloud 整合ribbon的时候出现了这个问题java.lang.IllegalStateException: No inst
- Android异常详情介绍这种异常我遇到以下两种情况: 1. java.lang.IllegalStateException: No wra
- 一、写在前面数据结构中的队列应该是比较熟悉的了,就是先进先出,因为有序故得名队列,就如同排队嘛,在对尾插入新的节点,在对首删除节点.jdk集
- 消息都是存放在一个消息队列中去,而消息循环线程就是围绕这个消息队列进入一个无限循环的,直到线程退出。如果队列中有消息,消息循环线程就会把它取
- 解决方法有如下两种:第一种如果你 repo sync 了 android 的整个源码,那么可以直接把你的 app 放到 /packages/
- 在观察者模式中有2个要素:一个是被观察对象,另一个是观察者。但被观察对象的状态发生改变会通知观察者。举例:把订阅报纸的人看作是观察者,把报纸
- C语言/C++怎样产生随机数:这里要用到的是rand()函数, srand()函数,和time()函数。需要说明的是,iostream头文件
- 前言本文的记录如何用CustomPaint、GestureDetector实现一个进度条控件。首先需要说明的是 flutter Materi
- 1. 什么是对象池对象池,顾名思义就是一定数量的已经创建好的对象(Object)的集合。当需要创建对象时,先在池子中获取,如果池子中没有符合
- 1.多数据源配置类整体项目结构1).pom.xml 项目依赖<?xml version="1.0" encodin
- 前言空间分配要点有:一是空间分配的连续性;二是动态内存申请;三是防止程序执行中出现异常错误。提示:开始讲解了嗷~后续会根据精力持续更新嗷!!
- ObjectMapper 忽略字段大小写核心代码:ObjectMapper mapper = new ObjectMapper();mapp
- 只能输入数字:"^[0-9]*$"。只能输入n位的数字:"^\d{n}$"。只能输入至少n位的数字:
- 本文介绍了Spring Security 控制授权的方法,分享给大家,具体如下:使用授权方法进行授权配置每一个 Spring Securit
- Android的应用被限制为最多占用16m的内存,至少在T-Mobile G1上是这样的(当然现在已经有几百兆的内存可以用了——译者注)。它