基于JavaMail API收发邮件的方法
作者:whylyq 发布时间:2022-03-10 09:34:24
标签:JavaMail,API,收发邮件
本文实例讲述了基于JavaMail API收发邮件的方法。分享给大家供大家参考。具体如下:
1.JavaMail API按其功能划分通常可分为如下三大类
(1)创建和解析邮件内容的API :Message类是创建和解析邮件的核心API,它的实例对象代表一封电子邮件。
(2)发送邮件的API:Transport类是发送邮件的核心API类,它的实例对象代表实现了某个邮件发送协议的邮件发送对象,例如SMTP协议。
(3)接收邮件的API:Store类是接收邮件的核心API类,它的实例对象代表实现了某个邮件接收协议的邮件接收对象,例如POP3协议。
2. Session类
Session类用于定义整个应用程序所需的环境信息,以及收集客户端与邮件服务器建立网络连接的会话信息,如邮件服务器的主机名、端口号、采用的邮件发送和接收协议等。Session对象根据这些信息构建用于邮件收发的Transport和Store对象,以及为客户端创建Message对象时提供信息支持。
3.使用JavaMail发送一封简单的邮件
创建包含邮件服务器的网络连接信息的Session对象。
创建代表邮件内容的Message对象。
创建Transport对象、连接服务器、发送Message、关闭连接。
4.实例
(1)JavaMail邮件只发送内容
public class SendMail {
public static void main(String[] args) throws Exception {
//属性文件
Properties props=new Properties();
//设置邮件的发送主机名、发送协议和是否验证
props.setProperty("mail.host","smtp.sohu.com" );
props.setProperty("mail.transport.protocol", "smtp");
props.setProperty("mail.smtp.auth", "true");
//获取发送接收邮件环境的对象
Session session=Session.getInstance(props);
Message message=createMessage(session);
//创建发送邮件的对象
Transport tsp=session.getTransport();
tsp.connect("jb51", "jb51");
tsp.sendMessage(message, message.getAllRecipients());
tsp.close();
}
public static Message createMessage(Session session) throws Exception{
//根据环境对象创建一份邮件
MimeMessage message=new MimeMessage(session);
//设置邮件属性
message.setFrom(new InternetAddress("jb51@sohu.com"));
message.setRecipient(Message.RecipientType.TO,new InternetAddress("jb51@sina.com"));
message.setSubject("hello");
//创建邮件体
MimeBodyPart text=new MimeBodyPart();
text.setContent("你好?","text/html;charset=utf-8");
//设置描述关系
MimeMultipart mm=new MimeMultipart();
mm.addBodyPart(text);
message.setContent(mm);
message.saveChanges();
return message;
}
}
(2)JavaMail邮件发送内容和图片
public class SendImageMail {
public static void main(String[] args) throws Exception {
//属性文件
Properties props=new Properties();
//设置邮件的发送主机名、发送协议和是否验证
props.setProperty("mail.host","smtp.sohu.com" );
props.setProperty("mail.transport.protocol", "smtp");
props.setProperty("mail.smtp.auth", "true");
//获取发送接收邮件环境的对象
Session session=Session.getInstance(props);
Message message=createMessage(session);
//创建发送邮件的对象
Transport tsp=session.getTransport();
tsp.connect("jb51", "jb51");
tsp.sendMessage(message, message.getAllRecipients());
tsp.close();
}
public static Message createMessage(Session session) throws Exception{
MimeMessage message=new MimeMessage(session);
message.setFrom(new InternetAddress("jb51@sohu.com"));
message.setRecipient(Message.RecipientType.TO,new InternetAddress("jb51@sina.com"));
message.setSubject("图片");
MimeBodyPart text=new MimeBodyPart();
text.setContent("好看吗?<br/><img src='cid:xx.jpg'>","text/html;charset=utf-8");
MimeBodyPart image=new MimeBodyPart();
image.setDataHandler(new DataHandler(new FileDataSource("src//f.jpg")));
image.setContentID("xx.jpg");
MimeMultipart mm=new MimeMultipart();
mm.addBodyPart(text);
mm.addBodyPart(image);
mm.setSubType("related");
message.setContent(mm);
message.saveChanges();
return message;
}
}
(3)JavaMail邮件发送内容、图片和附件
public class SendAttchImageMail {
public static void main(String[] args) throws Exception {
//属性文件
Properties props=new Properties();
//设置邮件的发送主机名、发送协议和是否验证
props.setProperty("mail.host","smtp.sohu.com" );
props.setProperty("mail.transport.protocol", "smtp");
props.setProperty("mail.smtp.auth", "true");
//获取发送接收邮件环境的对象
Session session=Session.getInstance(props);
Message message=createMessage(session);
//创建发送邮件的对象
Transport tsp=session.getTransport();
tsp.connect("jb51", "jb51");
tsp.sendMessage(message, message.getAllRecipients());
tsp.close();
}
public static Message createMessage(Session session) throws Exception{
MimeMessage message=new MimeMessage(session);
message.setFrom(new InternetAddress("jb51@sohu.com"));
message.setRecipient(Message.RecipientType.TO,new InternetAddress("jb51@sina.com"));
message.setSubject("图片");
MimeBodyPart text=new MimeBodyPart();
text.setContent("好看吗?<br/><img src='cid:xx.jpg'>","text/html;charset=utf-8");
MimeBodyPart image=new MimeBodyPart();
image.setDataHandler(new DataHandler(new FileDataSource("src//f.jpg")));
image.setContentID("xx.jpg");
MimeBodyPart attch=new MimeBodyPart();
DataHandler dh=new DataHandler(new FileDataSource("src//默默无 语.mp3"));
attch.setDataHandler(dh);
String name=dh.getName();
attch.setFileName(MimeUtility.encodeText(name));
MimeMultipart mm=new MimeMultipart();
mm.addBodyPart(text);
mm.addBodyPart(image);
mm.setSubType("related");
MimeBodyPart part=new MimeBodyPart();
part.setContent(mm);
MimeMultipart m=new MimeMultipart();
m.addBodyPart(part);
m.addBodyPart(attch);
m.setSubType("mixed");
message.setContent(m);
message.saveChanges();
return message;
}
}
注:邮箱地址必须是真实的
希望本文所述对大家的java程序设计有所帮助。


猜你喜欢
- 本文实例讲述了Android实现ListView数据动态加载的方法。分享给大家供大家参考,具体如下:list.setOnScrollList
- 一、select是什么select——>用于选择更快的结果。基于场景理解比如客户端要查询一个商
- 我就废话不多说了,大家还是直接看代码吧~//执行的是删除信息的操作 String a=request.getParameter("
- 使用Regex类需要引用命名空间:using System.Text.RegularExpressions;一、利用Regex类实现验证示例
- //********************************************************** //******主
- 本文所述代码是从一个C#程序中摘录出来的,主要实现C#创建目录、删除文件夹及文件的功能,包括所引用的名称空间等,特别是对C#不熟悉的初学者,
- 一、BIO、NIO、AIO学习Netty需要了解BIO、NIO、AIO,具体可参考Java网络编程IO模型 — BIO、
- 反阈值二值化反阈值二值化与阈值二值化互为逆操作。在OpenCV中该类的实现依赖于threshold() 函数。下面是该函数的声明:thres
- 本文实例讲述了C#资源释放方法。分享给大家供大家参考,具体如下:1、try{}finally{}2、using只有类型实现了IDisposa
- 前言其实不管是哪种滑动方式,基本思想都是类似的:当点击事件传递到View时,系统记下触摸点的坐标,手指移动的时候,系统记下移动后的坐标,并计
- 本文实例讲述了Java基于正则实现的日期校验功能。分享给大家供大家参考,具体如下:private void checkDate() thro
- 前言:因为项目中显示图片是用Picasso,设置placeholder和error图片的时候发现,本地图片的大小无法满足我的需求,需要先对图
- 1.首先是屏蔽浏览器右键菜单的问题,用以下代码可以让浏览器用自己的右键菜单:tempBrowser.ContextMenuStrip = t
- 异常和异常处理C# 语言的异常处理功能可帮助您处理程序运行时出现的任何意外或异常情况。异常处理使用 try、catch 和 finally
- 实践过程效果代码public partial class Form1 : Form{ public Form1()
- 1.springBoot的依赖确定项目中包含可以注解的依赖<dependency> <group
- 第一种方法:同步代码块:作用:把出现线程安全的核心代码上锁原理:每次只能一个线程进入,执行完毕后自行解锁,其他线程才能进来执行锁对象要求:理
- 最近一段时间不想使用Session了,想感受一下Token这样比较安全,稳健的方式,顺便写一个统一的接口给浏览器还有APP。所以把一个练手项
- 类和结构是.NET Framework中的同样类型系统的两种基本构造。两者在本质上都属于数据结构,封装这一组整体作为一个逻辑单位的数据和行为
- 在安卓开发导入项目过程中,出现错误再所难免。最近导入项目就遇到如下错误,具体如下图所示。出现如上错误,最初设想先看下项目能不能运行。经尝试可