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


猜你喜欢
- volatile对 volatile的理解volatile 是一种轻量级的同步机制。保证数据可见性不保证原子性禁止指令重排序JMMJMM(J
- 前言众所周知,黄油刀 ButterKnife 已经废弃了,并且已经不再维护了,而一些老项目估计还有一堆这样的代码,相信大家多多少少都有过被
- 本文以案例形式分析了Android中TelephonyManager类的用法。分享给大家供大家参考。具体如下:目录结构:main.xml布局
- 应用场景假设仓库中只能存放一件产品,生产者将生产出来的产品放入仓库,消费者将仓库中产品取走消费如果仓库中没有产品,则生产者将产品放入仓库,否
- 前几天用phonegap编译GameBuilder+CanTK时,发现HTML里的viewport无效。CanTK根据devicePixel
- 本文实例展示了C#基于TimeSpan实现倒计时效果的方法,比较实用的功能,对于初学者来说有一定的学习参考价值。具体实现方法如下:示例代码如
- 使用Android AudioRecord 录制PCM文件,android SDK保证在所有设备上都支持的采样频率只有44100HZ,所以如
- 项目记录:1.图像原理通常图像都是2D,对一副图像,可以看做其宽w*高h的一个二维数组, 即 图像=int[w][h],在w和h位置的每一个
- 关于SQLiteSQLite是一款轻型的嵌入式的遵守ACID的关系型数据库管理系统,诞生已有15个年头了。随着移动互联的发展,现在得到了更广
- 定义享元模式(FlyWeight Pattern),也叫蝇量模式,运用共享技术,有效的支持大量细粒度的对象,享元模式就是池技术的重要实现方式
- ReferenceWhy using finalizers is a bad idea当在一个类中使用了另外一个实现了IDisposable
- Activity是Android系统的4个应用程序组件之一。通过传统方法显示的Activity都是充满整个屏幕,也就是全屏的Activity
- 一、BroadcastState 的介绍广播状态(Broadcast State)是 Operator State 的一种特殊类型。如果我们
- 先直接看看效果吧初始情况 点击一个作为标记 再次点击后删除 3.这里还要感谢前辈的代码作为参考,毕竟以前也没有写过关于日历方面的东西,别人确
- MyBatis在注解上使用动态SQL1、用script标签包围然后像xml语法一样书写@Select({"<script&g
- 1.super介绍我们可以通过super关键字来实现对父类成员的访问,用来引用当前对象的父类。用于访问父类的属性,方法,构造器2.super
- 在Activity 添加即可getWindow().addFlags(WindowManager.LayoutParams.FLAG_SEC
- 本文实例为大家分享了Java实现带图形界面聊天程序的具体代码,供大家参考,具体内容如下ServerDemo01.javaimport jav
- 本文实例为大家介绍了Java九大内置对象,供大家参考,具体内容如下1、Request对象该对象封装了用户提交的信息,通过调用该对象相应的方法
- 1、实现循环队列【OJ链接】循环队列一般通过数组实现。我们需要解决几个问题。(1)数组下标实现循环a、下标最后再往后(offset 小于 a