javamail发送邮件

1. jar包:

 mail.jar

2. java 类

package com.yoplore.apollo.wanwei;

import java.util.*;

import javax.activation.DataHandler;
import javax.activation.DataSource;
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 com.sun.mail.util.MailSSLSocketFactory;

public class SendEmail{
	public void sendEmail(String senderQQ,String senderQQAuthorizationCode,String recipientQQMail,String ccListQQMail,String mailTitle,String station_name,String station_code ) throws Exception{
		//拼接发件人QQ邮箱地址
		String senderQQEmail = senderQQ + "@qq.com";
		
		Properties prop = new Properties();
		// 开启debug调试,以便在控制台查看
		prop.setProperty("mail.debug", "false");
		// 设置邮件服务器主机名
		prop.setProperty("mail.host", "smtp.qq.com");
		// 发送服务器需要身份验证
		prop.setProperty("mail.smtp.auth", "true");
		// 发送邮件协议名称
		prop.setProperty("mail.transport.protocol", "smtp");
		//使用SSL,企业邮箱必需!
		//开启安全协议
		// 开启SSL加密,否则会失败

		MailSSLSocketFactory sf = null;
		try {
			sf = new MailSSLSocketFactory();
			sf.setTrustAllHosts(true);
		} catch (Exception e1) {
			e1.printStackTrace();
		}
		prop.put("mail.smtp.ssl.enable", "true");
		prop.put("mail.smtp.ssl.socketFactory", sf);
		//
//		//获取Session对象
//		Session s = Session.getDefaultInstance(prop,new Authenticator() {
//			//此访求返回用户和密码的对象
//			@Override
//			protected PasswordAuthentication getPasswordAuthentication() {
//				PasswordAuthentication pa = new PasswordAuthentication("wygm@daee.cn", "Ok1234");
//				return pa;
//			}
//		});
//		//设置session的调试模式,发布时取消
//		s.setDebug(true);

		// 创建session
		Session session = Session.getInstance(prop);
		// 通过session得到transport对象
		Transport ts;
		try {
			ts = session.getTransport();
			// 连接邮件服务器:邮箱类型,帐号,授权码
			// qq邮箱授权码获取:登录QQ邮箱 → 设置 → 账户 → 找到IMAP/SMTP服务,点击开启 ,开启后会获取一个授权码
			
			// 创建邮件
			Message message = new MimeMessage(session);
			// 指明邮件的发件人
			message.setFrom(new InternetAddress(senderQQEmail));
			// 指明邮件的收件人,现在发件人和收件人是一样的,那就是自己给自己发
			//	Message.RecipientType.TO 收件人
			//	Message.RecipientType.CC 抄送人
			//	Message.RecipientType.BCC 暗送人
			message.setRecipient(Message.RecipientType.TO, new InternetAddress(recipientQQMail));
			message.setRecipient(Message.RecipientType.CC, new InternetAddress(ccListQQMail));
			// 邮件的标题
			message.setSubject(mailTitle);

			MimeBodyPart text = new MimeBodyPart();
			text.setContent("<p>王工,你好~<br/></p>我是远索科技有限公司的工程师<br/>我们新引入了一个电站数据,电站数据如下:<br/>"+"  ① 电站名称:"+station_name+",电站编码:"+station_code, "text/html;charset=UTF-8");
//			// 准备图片数据
//			MimeBodyPart image = new MimeBodyPart();
//			DataHandler dh = new DataHandler(new FileDataSource("E:\1.png"));
//			image.setDataHandler(dh);
//			image.setContentID("xxx.jpg");

			// 附件部分
//			MimeBodyPart messageBodyPart = new MimeBodyPart();
//			String filename = "E:\1.png";
//			DataSource source = new FileDataSource(filename);
//			messageBodyPart.setDataHandler(new DataHandler(source));
//			messageBodyPart.setFileName(filename);


			// 描述数据关系
			MimeMultipart mm = new MimeMultipart();
			mm.addBodyPart(text);
//			mm.addBodyPart(image);
//			mm.addBodyPart(messageBodyPart);
			mm.setSubType("related");

			message.setContent(mm);
			message.saveChanges();
			// 发送邮件
			ts.sendMessage(message, message.getAllRecipients());
			ts.close();
		} catch (Exception e) {
			// TODO Auto-generated catch block
//			e.printStackTrace();
			throw e;
		}

	}
}

  3. 调用java 类

try {
	//添加成功,发送邮件通知
	SendEmail email = new SendEmail();
	email.sendEmail(Configs.senderQQ, Configs.senderQQAuthorizationCode, Configs.recipientQQMail, Configs.CcListQQMail, Configs.mailTitle,station_name,station_code);	
	cmdRes = ConstantUtil.CMD_RES_SUCCESS;
	resFailReason = newMap.get("failreason").toString();
} catch (Exception e) {
	cmdRes = ConstantUtil.CMD_RES_FAIL;
	resFailReason = "添加成功,邮件通知失败,请联系相关人员,手动发送邮件通知第三方!";
}

  4. 配置变量

public static final String senderQQ = "******";				  		  //发件人的QQ号
public static final String senderQQAuthorizationCode = "**********";		       //发件人的QQ授权码,
public static final String recipientQQMail = "*****@yeah.net";		  		   //收件人的QQ邮箱
public static final String CcListQQMail = "******@qq.com";   		  		  //抄送人的QQ邮箱
public static final String mailTitle = "关于 引、泄水流量数据接入";				   //发送邮件主题

  5. 关于发件人的QQ授权码获取步骤

  qq邮箱授权码获取:登录QQ邮箱 → 设置 → 账户 → 找到IMAP/SMTP服务,点击开启 ,开启后会获取一个授权码

 

原文地址:https://www.cnblogs.com/mycnblogs-guoguo/p/11346389.html