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\.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\.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\.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)


相关推荐

  • jQuery+CSS3实现404背景动画特效

    效果:http://hovertree.com/texiao/jquery/74/源码下载:http://hovertree.com/h/bjaf/ko0gcgw5.htm效果图如下:代码如下:转自

    2021年12月26日
  • 字节转MB与Mb转字节[通俗易懂]

    字节转MB与Mb转字节[通俗易懂]/***字节转成MB*/privateBigDecimalfileSizeConversion(LongfileSize){DecimalFormatdf=newDecimalF

  • 忽略特殊文件

    忽略特殊文件

    2021年10月20日
  • java中的继承详解

    java中的继承详解继承的描述在现实生活中,继承一般指的是子女继承父辈的财产。在程序中,继承描述的是事物之间的所属关系,通过继承可以使多种事物之间形成一种关系体系。例如猫和狗都属于动物,程序中便可以描述为猫…

  • python中类(class)

    python中类(class)"""面向过程和面向对象(oop:objectorientedprogramming)的基本概念面向过程:—侧重于怎么做?1.把完成某一个需求的所有步骤从头到尾逐步实现2.根据开发要求,将某些功能独立的代码封装成一个又一个函数3.最后完成的代码,就是顺序的调用不同的函数特点:1.注重步骤与过程,不注重职责分工2.如果需求复杂,代码会变得很复杂3.开发复杂项…

  • LinkedList基本用法「建议收藏」

    LinkedList基本用法「建议收藏」LinkedList类是双向列表,列表中的每个节点都包含了对前一个和后一个元素的引用.LinkedList的构造函数如下1.publicLinkedList(): ——生成空的链表2.publicLinkedList(Collectioncol): 复制构造函数1、获取链表的第一个和最后一个元素[java] viewplaincopy

发表回复

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

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