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、创建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;
	}
}

 

  • 20
    点赞
  • 93
    收藏
    觉得还不错? 一键收藏
  • 9
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值