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;
	}
}

 

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

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

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • html幻灯片图片切换效果代码,jquery的幻灯片图片切换效果代码分享

    html幻灯片图片切换效果代码,jquery的幻灯片图片切换效果代码分享本文实例讲述了jquery的幻灯片图片切换效果。分享给大家供大家参考。具体如下:这是一款基于jquery的幻灯片图片切换效果代码,有缩略图和标题,可以自定义标题。运行效果图:——————-查看效果下载源码——————-小提示:浏览器中如果不能正常运行,可以尝试切换浏览模式。(1)在head区域引入CSS样式:(2)js代码://$(do…

    2022年7月14日
    40
  • 物联网架构及五大通信协议是什么_物联网不能实现哪种通信方式

    物联网架构及五大通信协议是什么_物联网不能实现哪种通信方式消息触达能力是物联网(internetofthings,IOT)的重要支撑,而物联网很多技术都源于移动互联网。柳猫将阐述移动互联网消息推送技术在物联网中的应用和演进。一、物联网架构和关键技术从开发的角度,无线接入是物联网设备端的核心技术,身份设备管理和消息推送技术是物联网云端的核心技术。而从场景体验的角度,除了前者,还要包括手机的前端开发技术。IP互联架构已是物联网的事实标准(有关物联网TCP/IP层关键技术将另文阐述,敬请关注)。本文所讲的消息推送技术是基于TCP/I…

    2022年9月18日
    2
  • jrtplib介绍[通俗易懂]

    jrtplib介绍[通俗易懂]程序流程发送:获得接收端的IP地址和端口号创建RTP会话指定RTP数据接收端设置RTP会话默认参数发送流媒体数据接收:获得用户指定的端口号创建RTP会话设置接收模式接受RTP数据检索RTP数据源获取RTP数据报删除RTP数据报1.初始化I、在使用JRTPLIB进行实时流媒体数据传输之前,首先应该生成R…

    2022年7月28日
    12
  • 股票实盘交易接口API(招商证券交易接口api)

    股票配资系统实盘交易接口怎么做有没有好用的实盘交易接口股票实盘交易接口做股票配资系统难免会用到交易接口,好用的能用的接口也少。券商那边也不提供,那索性自己开发股票配资实盘交易接口了。经过多次尝试,总算搞出来了,实时交易接口可以获取用户数据,实时对接,账户信息,委托买入卖出,支持多家券商。我们做股票配资系统的时候遇到过很多次交易接口问题,然后后面终于是解决了,现在我们的股票配资系统已经很完善…

    2022年4月15日
    579
  • [Cqoi2014]数三角形——组合数

    [Cqoi2014]数三角形——组合数[Cqoi2014]数三角形——组合数

    2022年4月20日
    43
  • 通信加密原理

    通信加密原理一、历史:消息通信时都需要加密,如果不加密,在请求和响应的过程中,如果消息中途被黑客劫持或篡改后果不堪设想。如图所示:1976年以前,所有的加密方法都是同一种模式:对称加密1、客户端C选择某一种加密规则K,对信息进行加密,然后将加密的信息传递给服务端S;2、服务端S接收到加密的信息后…

    2022年5月27日
    38

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

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