Java 发送邮件的几种方式
发送文件的项目地址(free):https://download.csdn.net/download/qq_36474549/10741073
导入jar包:activation-1.1.jar javax.mail-1.6.2.jar
内容:1.发送一封只包含文本的简单邮件 SendEmail_text.java
2.发送包含内嵌图片的邮件 SendEmail_photo.java
3.发送包含附件的邮件 SendEmail_attachments.java
4.发送包含内嵌图片和附件的复杂邮件 SendEmail_Photo_Attachments.java
1. 发送一封只包含文本的简单邮件
package cn.wz.util;import java.util.Properties;
import javax.mail.Message;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;/*** @ClassName: Sendmail* @Description: 发送一封只包含文本的简单邮件*/
public class SendEmail_text {private static String mailFrom = null;// 指明邮件的发件人private static String password_mailFrom = null;// 指明邮件的发件人登陆密码private static String mailTo = null; // 指明邮件的收件人private static String mailTittle = null;// 邮件的标题private static String mailText =null; // 邮件的文本内容private static String mail_host =null; // 邮件的服务器域名public static void main(String[] args) throws Exception {mailFrom = "test1@wz.com";password_mailFrom="test";mailTo = "test2@xk.com";mailTittle="节日快乐2!";mailText = "这是一个简单的邮件";mail_host="wz.com";Properties prop = new Properties();prop.setProperty("mail.host", mail_host);prop.setProperty("mail.transport.protocol", "smtp");prop.setProperty("mail.smtp.auth", "true");// 使用JavaMail发送邮件的5个步骤// 1、创建sessionSession session = Session.getInstance(prop);// 开启Session的debug模式,这样就可以查看到程序发送Email的运行状态session.setDebug(true);// 2、通过session得到transport对象Transport ts = session.getTransport();// 3、使用邮箱的用户名和密码连上邮件服务器,发送邮件时,发件人需要提交邮箱的用户名和密码给smtp服务器,用户名和密码都通过验证之后才能够正常发送邮件给收件人。ts.connect(mail_host,mailFrom, password_mailFrom);// 4、创建邮件Message message = createSimpleMail(session,mailFrom,mailTo,mailTittle,mailText);// 5、发送邮件ts.sendMessage(message, message.getAllRecipients());ts.close();}/*** @Method: createSimpleMail* @Description: 创建一封只包含文本的邮件*/public static MimeMessage createSimpleMail(Session session, String mailfrom, String mailTo, String mailTittle,String mailText) throws Exception {// 创建邮件对象MimeMessage message = new MimeMessage(session);// 指明邮件的发件人message.setFrom(new InternetAddress(mailfrom));// 指明邮件的收件人,现在发件人和收件人是一样的,那就是自己给自己发message.setRecipient(Message.RecipientType.TO, new InternetAddress(mailTo));// 邮件的标题message.setSubject(mailTittle);// 邮件的文本内容message.setContent(mailText, "text/html;charset=UTF-8");// 返回创建好的邮件对象return message;}
}
2.发送包含内嵌图片的邮件
package cn.wz.util;import java.io.FileOutputStream;
import java.util.Properties;import javax.activation.DataHandler;
import javax.activation.FileDataSource;
import javax.mail.Message;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;/*** @Description: 发送包含内嵌图片的邮件*/
public class SendEmail_photo {private static String mailFrom = null;// 指明邮件的发件人private static String password_mailFrom = null;// 指明邮件的发件人登陆密码private static String mailTo = null; // 指明邮件的收件人private static String mailTittle = null;// 邮件的标题private static String mailText = null; // 邮件的文本内容private static String mail_host = null; // 邮件的服务器域名private static String photoSrc = null; // 发送图片的路径public static void main(String[] args) throws Exception {mailFrom = "test1@wz.com";password_mailFrom = "test";mailTo = "test2@wz.com";mailTittle = "带图片的邮件";mailText = "这是一封邮件正文带图片的邮件";mail_host = "wz.com";photoSrc = "resource\\images\\3.jpg";Properties prop = new Properties();prop.setProperty("mail.host", mail_host);// 需要修改prop.setProperty("mail.transport.protocol", "smtp");prop.setProperty("mail.smtp.auth", "true");// 使用JavaMail发送邮件的5个步骤// 1、创建sessionSession session = Session.getInstance(prop);// 开启Session的debug模式,这样就可以查看到程序发送Email的运行状态session.setDebug(true);// 2、通过session得到transport对象Transport ts = session.getTransport();// 3、连上邮件服务器,需要发件人提供邮箱的用户名和密码进行验证ts.connect(mail_host, mailFrom, password_mailFrom);// 需要修改// 4、创建邮件Message message = createImageMail(session);// 5、发送邮件ts.sendMessage(message, message.getAllRecipients());ts.close();}/*** @Method: createImageMail* @Description: 生成一封邮件正文带图片的邮件* @param session* @return* @throws Exception*/public static MimeMessage createImageMail(Session session) throws Exception {// 创建邮件MimeMessage message = new MimeMessage(session);// 设置邮件的基本信息message.setFrom(new InternetAddress(mailFrom)); // 发件人message.setRecipient(Message.RecipientType.TO, new InternetAddress(mailTo)); // 收件人// 邮件标题message.setSubject(mailTittle);// 准备邮件数据// 准备邮件正文数据MimeBodyPart text = new MimeBodyPart();text.setContent(mailText + "<img src='cid:xxx.jpg'>", "text/html;charset=UTF-8");// 需要修改// 准备图片数据MimeBodyPart image = new MimeBodyPart();DataHandler dh = new DataHandler(new FileDataSource(photoSrc));// 需要修改image.setDataHandler(dh);image.setContentID("xxx.jpg");// 需要修改// 描述数据关系MimeMultipart mm = new MimeMultipart();mm.addBodyPart(text);mm.addBodyPart(image);mm.setSubType("related");message.setContent(mm);message.saveChanges();// 将创建好的邮件写入到F盘以文件的形式进行保存message.writeTo(new FileOutputStream("F:/Program Files/TestMail/ImageMail.eml"));// 需要修改// 返回创建好的邮件return message;}
}
3.发送包含附件的邮件
package cn.wz.util;import java.io.FileOutputStream;
import java.util.Properties;
import javax.activation.DataHandler;
import javax.activation.FileDataSource;
import javax.mail.Message;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;/*** @Description: 发送包含附件的邮件*/public class SendEmail_attachments {private static String mailFrom = null;// 指明邮件的发件人private static String password_mailFrom = null;// 指明邮件的发件人登陆密码private static String mailTo = null; // 指明邮件的收件人private static String mailTittle = null;// 邮件的标题private static String mailText = null; // 邮件的文本内容private static String mail_host = null; // 邮件的服务器域名private static String photoSrc = null; // 发送图片的路径public static void main(String[] args) throws Exception {mailFrom = "test1@wz.com";password_mailFrom = "test";mailTo = "test2@wz.com";mailTittle = "JavaMail邮件发送测试";mailText = "使用JavaMail创建的带附件的邮件";mail_host = "wz.com";photoSrc = "resource\\images\\5.jpg";Properties prop = new Properties();prop.setProperty("mail.host", mail_host);// 需要修改prop.setProperty("mail.transport.protocol", "smtp");prop.setProperty("mail.smtp.auth", "true");// 使用JavaMail发送邮件的5个步骤// 1、创建sessionSession session = Session.getInstance(prop);// 开启Session的debug模式,这样就可以查看到程序发送Email的运行状态session.setDebug(true);// 2、通过session得到transport对象Transport ts = session.getTransport();// 3、连上邮件服务器,需要发件人提供邮箱的用户名和密码进行验证ts.connect(mail_host, mailFrom, password_mailFrom);// 需要修改// 4、创建邮件Message message = createAttachMail(session);// 5、发送邮件ts.sendMessage(message, message.getAllRecipients());ts.close();}/*** @Method: createAttachMail* @Description: 创建一封带附件的邮件*/public static MimeMessage createAttachMail(Session session) throws Exception {MimeMessage message = new MimeMessage(session);// 设置邮件的基本信息message.setFrom(new InternetAddress(mailFrom)); // 发件人message.setRecipient(Message.RecipientType.TO, new InternetAddress(mailTo));// 收件人// 邮件标题message.setSubject(mailTittle);// 创建邮件正文,为了避免邮件正文中文乱码问题,需要使用charset=UTF-8指明字符编码MimeBodyPart text = new MimeBodyPart();text.setContent(mailText, "text/html;charset=UTF-8");// 创建邮件附件MimeBodyPart attach = new MimeBodyPart();DataHandler dh = new DataHandler(new FileDataSource(photoSrc));// 需要修改attach.setDataHandler(dh);attach.setFileName(dh.getName());// 创建容器描述数据关系MimeMultipart mp = new MimeMultipart();mp.addBodyPart(text);mp.addBodyPart(attach);mp.setSubType("mixed");message.setContent(mp);message.saveChanges();// 将创建的Email写入到F盘存储message.writeTo(new FileOutputStream("F:/Program Files/TestMail/ImageMail.eml"));// 需要修改// 返回生成的邮件return message;}
}
4.发送包含内嵌图片和附件的复杂邮件
package cn.wz.util;import java.io.File;
import java.io.FileOutputStream;
import java.util.ArrayList;
import java.util.List;
import java.util.Properties;
import java.util.zip.ZipEntry;
import java.util.zip.ZipFile;import javax.activation.DataHandler;
import javax.activation.FileDataSource;
import javax.mail.Message;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;
import javax.mail.internet.MimeUtility;/*** @Description: 发送包含内嵌图片和附件的复杂邮件*/public class SendEmail_Photo_Attachments {private static String mailFrom = null;// 指明邮件的发件人private static String password_mailFrom = null;// 指明邮件的发件人登陆密码private static String mailTo = null; // 指明邮件的收件人private static String mailTittle = null;// 邮件的标题private static String mailText = null; // 邮件的文本内容private static String mail_host = null; // 邮件的服务器域名private static String photoSrc = null; // 发送图片的路径private static List<String> fileList = new ArrayList<>(); // 发送附件的路径public static void main(String[] args) throws Exception {mailFrom = "test2@wz.com";password_mailFrom = "test";mailTo = "test3@wz.com";mailTittle = "带附件和带图片的的邮件";mailText ="xxx这是xxxx";mail_host = "wz.com";photoSrc = "resource\\images\\4.jpg";fileList.add(0,"resource\\attachments\\a.7z");fileList.add(1,"resource\\attachments\\b.7z");Properties prop = new Properties();prop.setProperty("mail.host", mail_host);// 需要修改prop.setProperty("mail.transport.protocol", "smtp");prop.setProperty("mail.smtp.auth", "true");// 使用JavaMail发送邮件的5个步骤// 1、创建sessionSession session = Session.getInstance(prop);// 开启Session的debug模式,这样就可以查看到程序发送Email的运行状态session.setDebug(true);// 2、通过session得到transport对象Transport ts = session.getTransport();// 3、连上邮件服务器,需要发件人提供邮箱的用户名和密码进行验证ts.connect(mail_host, mailFrom, password_mailFrom);// 需要修改// 4、创建邮件Message message = createMixedMail(session);// 5、发送邮件ts.sendMessage(message, message.getAllRecipients());ts.close();}/*** @Method: createMixedMail* @Description: 生成一封带附件和带图片的邮件*/public static MimeMessage createMixedMail(Session session) throws Exception {MimeMessage message = new MimeMessage(session);// 设置邮件的基本信息message.setFrom(new InternetAddress(mailFrom)); // 发件人 message.setRecipient(Message.RecipientType.TO, new InternetAddress(mailTo));// 收件人message.setSubject(mailTittle);// 正文MimeBodyPart text = new MimeBodyPart();text.setContent(mailText+"<br/><img src='cid:aaa.jpg'>", "text/html;charset=UTF-8");// 图片MimeBodyPart image = new MimeBodyPart();image.setDataHandler(new DataHandler(new FileDataSource(photoSrc)));image.setContentID("aaa.jpg");// 附件1MimeBodyPart attach = new MimeBodyPart();DataHandler dh = new DataHandler(new FileDataSource(fileList.get(0)));attach.setDataHandler(dh);attach.setFileName(dh.getName());// 附件2MimeBodyPart attach2 = new MimeBodyPart();DataHandler dh2 = new DataHandler(new FileDataSource(fileList.get(1)));attach2.setDataHandler(dh2);attach2.setFileName(MimeUtility.encodeText(dh2.getName()));// 描述关系:正文和图片MimeMultipart mp1 = new MimeMultipart();mp1.addBodyPart(text);mp1.addBodyPart(image);mp1.setSubType("related");// 描述关系:正文和附件MimeMultipart mp2 = new MimeMultipart();mp2.addBodyPart(attach);mp2.addBodyPart(attach2);// 代表正文的bodypartMimeBodyPart content = new MimeBodyPart();content.setContent(mp1);mp2.addBodyPart(content);mp2.setSubType("mixed");message.setContent(mp2);message.saveChanges();message.writeTo(new FileOutputStream("F:/Program Files/TestMail/ImageMail.eml"));// 返回创建好的的邮件return message;}
}
Java 发送邮件的几种方式相关推荐
- python邮件发送哪个好_最全总结!聊聊 Python 发送邮件的几种方式
1. 前言 邮件,作为最正式规范的沟通方式,在日常办公过程中经常被用到 我们都知道 Python内置了对 SMTP 的支持,可以发送纯文本.富文本.HTML 等格式的邮件 本文将聊聊利用 Python ...
- Java技术分享:升级所安装Java版本的两种方式
在进行Java开发的时候我们可能会需要升级所安装的Java版本,那么你知道应该如何安装吗?小千今天就来给大家介绍两种方式. 一.卸载掉原本安装的Java,下载最新安装包安装即可. 这个步骤就不介绍了, ...
- python 发送邮件的两种方式【终极篇】
python 发送邮件的两种方式[终极篇] 一,利用python自带的库 smtplib简单高效 from email.mime.multipart import MIMEMultipart from ...
- 最全总结!聊聊 Python 发送邮件的几种方式
1. 前言 邮件,作为最正式规范的沟通方式,在日常办公过程中经常被用到 很多人学习python,不知道从何学起. 很多人学习python,掌握了基本语法过后,不知道在哪里寻找案例上手. 很多已经做案例 ...
- Java操作Excel三种方式POI、Hutool、EasyExcel
Java操作Excel三种方式POI.Hutool.EasyExcel 1. Java操作Excel概述 1.1 Excel需求概述 1.2 Excel操作三种方式对比 2. ApachePOIExc ...
- java创建对象的五种方式
java创建对象的五种方式 一.使用new关键字 二.使用clone方法 三.使用反序列化 四.使用反射 五.使用Unsafe 一.使用new关键字 如 User user=new User(); 执 ...
- Linux之Ubuntu20.04安装Java JDK8的两种方式
Linux之Ubuntu20.04远程安装Java JDK8的两种方式 安装openjdk8 更新软件包列表: sudo apt-get update 安装openjdk-8-jdk: sudo ap ...
- python自动发邮件富文本_Python自动化测试发送邮件太麻烦?!一起聊一聊 Python 发送邮件的3种方式...
1. 前言 发送邮件,我们在平时工作中经用到,做为测试人员,在自动化测试中用的也比较多,需要发送邮件给某领导 SMTP是Python默认的邮件模块,可以发送纯文本.富文本.HTML 等格式的邮件 今天 ...
- 关于发送邮件的几种方式
关于SMTP协议 简单邮件传输协议 (Simple Mail Transfer Protocol, SMTP) 是在Internet传输email的事实标准. SMTP是一个相对简单的基于文本的协议. ...
- java 发送邮件(SSL加密方式,含附件)
java 发送邮件(SSL加密方式) 一.基于javamail发送邮件 二.基于Apache提供的commons-email发送邮件 一.基于javamail发送邮件 maven: <depen ...
最新文章
- linux ssh -R 代理不同内网主机互连
- c++求平均值_云顶之弈S4:六射手娱乐吃鸡!人均刮痧王,每个人都是主C
- 【MongoDB】增删改查基本操作
- Spark函数详解系列--RDD基本转换
- MySQL学习笔记7:基本查询
- continue后面的语句还执行吗_循环结构辅助控制语句
- 树莓派zero配置打印机
- obj 转为Json 时间格式自定义
- 微信开通检测工具使用小诀窍
- 5分钟商学院学习笔记
- 湖南大学计算机专业毕业生待遇,分享湖南大学2017年毕业生就业基本情况及质量薪资...
- 计算机存储一个像素点需要多少个字节
- 使用Softice调试驱动程序
- 漏洞修复:web应用服务器版本信息泄露
- 计算机实践游戏报告范文,关于在校学生玩电脑游戏的调查报告
- Spring Catching 实战
- redis学习日志 【一、安装】
- 基于遥感影像的耕地地块提取相关论文、代码以及相关开源数据集
- c++-tissue_habit-namespace
- Second Language Acquire 英语探索前期