• 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服务,点击开启 ,开启后会获取一个授权码

     

  • 相关阅读:
    简单小巧的跨平台共享内存代码
    调试发行版程序 (二)
    休息日公园独步偶得
    Minimum Depth of Binary Tree
    LeetCode Length of Last word
    黑书 折纸痕 uva 177
    Palindrome Partitioning II leetcode
    Acumem ThreadSpotter
    C++ string int 转换 split
    Valid Palindrome Leetcode
  • 原文地址:https://www.cnblogs.com/mycnblogs-guoguo/p/11346389.html
Copyright © 2020-2023  润新知