Java 发送邮件的几种方式[通俗易懂]

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.发送包含内嵌图片的邮件   Send…

大家好,又见面了,我是你们的朋友全栈君。

发送文件的项目地址(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、创建session
		Session 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、创建session
		Session 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、创建session
		Session 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、创建session
		Session 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");

		// 附件1
		MimeBodyPart attach = new MimeBodyPart();
		DataHandler dh = new DataHandler(new FileDataSource(fileList.get(0)));
		attach.setDataHandler(dh);
		attach.setFileName(dh.getName());

		// 附件2
		MimeBodyPart 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);

		// 代表正文的bodypart
		MimeBodyPart 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;
	}
}

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/146590.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 下载mysql驱动jar包

    下载mysql驱动jar包MYSQL官网历史驱动Jar包下载地址:https://downloads.mysql.com/archives/c-j/ProductVersion选择mysql版本,OperatingSystem选择PlatformIndepen,然后下载即可

  • Mysql decimal(m,d)的说明

    Mysql decimal(m,d)的说明看了一些博客,觉得很多都是复制的,不如自己亲测一篇:createtabledecimal_test(idintauto_incrementPRIMARYkey,scoredecimal(5,2)–取值范围是-999.99到999.99);–整数的位数必须小于等于m-d,不然报错。小数的位数可以大于d位。多…

  • 8大轻型网管工具,网络管理好帮手「建议收藏」

    8大轻型网管工具,网络管理好帮手「建议收藏」  从设备发现到系统、网络和流量可视性,这些轻型的网管工具非常实用。在网络和服务器世界,重点是可视性、可视性、可视性,如果你不知道你的网络和服务器在每天每秒正在做什么,你很可能会出问题。幸运的是,这里有很多好工具(商业和开源工具)来帮助你满足需求。  在本文中我们提供了一些很好用的网管工具,这些工具适合各种规模的网络。从网络和服务器监控到趋势、图形,甚至是交换和路由器配置备份,这些工具都可以帮…

  • 任意角和弧度制[通俗易懂]

    任意角和弧度制[通俗易懂]1importmath23PI=math.pi45defshow():6print(7'小主,(* ̄︶ ̄),请选择你需要的功能:\n'8'\t\0

  • 银行家算法 C语言实现

    银行家算法 C语言实现C语言实现银行家算法这几天老师要求使用C语言实现银行家算法,数据可以自定义。想来想去还是照着书现成的数据来模拟一下。教材使用的是西安电子科大出版社的《计算机操作系统》汤小丹第四版。模拟数据使用的是P121页第4题的数据。听到老师布置题目的第一时间我还是有点懵,看了下书更懵了,这条条框框的判断条件怎么这么多。。沉下心来慢慢看,其实还是挺简单的算法。/*Author:Cnkizy…

  • 越权漏洞详解

    越权漏洞详解OverPermission越权风险问题越权访问(BrokenAccessControl,简称BAC)是Web应用程序中一种常见的漏洞越权访问漏洞的产生比如,某个订单系统,用户可以查询自己的订单信息。A用户查询订单时,发送的HTTP请求中包含参数“orderid=A”,订单系统取得orderid后最终会查询数据库,查询语句类似于“select*fromtablenamewhereorderid=A”。B用户查询订单时,发送的HTTP请求中包含参数“orderid=B”,系统查询数

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号