| 
					
				 | 
			
			
				@ -0,0 +1,193 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				package com.yihu.jw.base.util; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.sun.mail.util.MailSSLSocketFactory; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import org.springframework.beans.factory.annotation.Value; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import org.springframework.stereotype.Component; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import javax.mail.*; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import javax.mail.internet.InternetAddress; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import javax.mail.internet.MimeBodyPart; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import javax.mail.internet.MimeMessage; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import javax.mail.internet.MimeMultipart; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import java.io.UnsupportedEncodingException; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import java.util.Calendar; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import java.util.Properties; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				/** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 * Created by zdm on 2018/11/21. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				@Component 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				public class SendEmailUtils { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    private static String username; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    private  static  String smtp; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    private  static  String host; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    private  static  String port; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    private  static  String auth; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    private  static  String timeout; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    private  static  String password; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * mimeMessage发送邮件 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param email 目标邮箱 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param content 邮件主体内容 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param subject 邮件标题 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    public static  boolean mimeMessage(String email,String content,String subject){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        // 1.创建一个程序与邮件服务器会话对象 Session 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        Properties props = new Properties(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        props.setProperty("mail.transport.protocol", smtp);// 连接协议 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        props.setProperty("mail.smtp.host", host);// 连接协议 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        props.setProperty("mail.smtp.port", port);// 连接协议 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        // 指定验证为true 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        props.setProperty("mail.smtp.auth", auth); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        props.setProperty("mail.smtp.timeout",timeout); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        props.setProperty("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        // 验证账号及密码,密码需要是第三方授权码 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        Authenticator auth = new Authenticator() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            public PasswordAuthentication getPasswordAuthentication(){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                return new PasswordAuthentication(username, password); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        Session session = Session.getInstance(props, auth); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        // 2.创建一个Message,它相当于是邮件内容 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        MimeMessage message = new MimeMessage(session); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        try { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            //防止成为垃圾邮件,披上outlook的马甲 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            message.addHeader("X-Priority", "3"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            message.addHeader("X-MSMail-Priority", "Normal"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            message.addHeader("X-Mailer", "Microsoft Outlook Express 6.00.2900.2869");   //本文以outlook名义发送邮件,不会被当作垃圾邮件 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            message.addHeader("X-MimeOLE", "Produced By Microsoft MimeOLE V6.00.2900.2869"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            message.addHeader("ReturnReceipt", "1"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            // 设置发送者 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            String nick=javax.mail.internet.MimeUtility.encodeText("厦门i健康"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            message.setFrom(new InternetAddress(nick+" <"+username+">")); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            // 设置发送方式与接收者 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            message.setRecipient(MimeMessage.RecipientType.TO, new InternetAddress(email)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            // 设置主题 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            message.setSubject(subject); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            //创建消息主体 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            MimeBodyPart messageBodyPart = new MimeBodyPart(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            //发送的内容 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            messageBodyPart.setText(content); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            // 创建多重消息 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            Multipart multipart = new MimeMultipart(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            multipart.addBodyPart(messageBodyPart); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            // 设置邮件消息发送的时间 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            message.setSentDate(Calendar.getInstance().getTime()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            // 设置内容 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            message.setContent(multipart, "text/html;charset=utf-8"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            // 3.创建 Transport用于将邮件发送 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            Transport.send(message); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        }catch (Exception e){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            e.printStackTrace(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            return  true; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * 邮件发送 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param email 目标邮箱 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param content 邮件主体内容 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param subject 邮件主题 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    public static boolean  sendMessage(String email,String content,String subject){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        // 配置 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        Properties prop=new Properties(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        // 设置邮件服务器主机名,这里是163 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        prop.put("mail.host",host ); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        // 发送邮件协议名称 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        prop.put("mail.transport.protocol",smtp); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        // 是否认证 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        prop.put("mail.smtp.auth", auth); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        try { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            // SSL加密 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            MailSSLSocketFactory sf = null; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            sf = new MailSSLSocketFactory(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            // 设置信任所有的主机 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            sf.setTrustAllHosts(true); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            prop.put("mail.smtp.ssl.enable", true); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            prop.put("mail.smtp.ssl.socketFactory", sf); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            // 创建会话对象 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            Session session = Session.getInstance(prop, new Authenticator() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                // 认证信息,需要提供"用户账号","授权码" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                public PasswordAuthentication getPasswordAuthentication() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    return new PasswordAuthentication(username, password); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            // 是否打印出debug信息 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//            session.setDebug(true); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            // 创建邮件 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            Message message = new MimeMessage(session); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            // 邮件发送者 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            message.setFrom(new InternetAddress(username)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            // 邮件接受者 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            message.addRecipient(Message.RecipientType.TO, new InternetAddress(email)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            // 邮件主题 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            message.setSubject(subject); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            message.setContent(content, "text/html;charset=UTF-8"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            // Transport.send(message); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            // 邮件发送 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            Transport transport = session.getTransport(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            transport.connect(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            transport.sendMessage(message, message.getAllRecipients()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            transport.close(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } catch (Exception e) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            e.printStackTrace(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            return false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        return true; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    @Value("${spring.mail.username}") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    public void setUsername(String username) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        SendEmailUtils.username = username; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    @Value("${spring.mail.protocol}") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    public void setSmtp(String smtp) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        SendEmailUtils.smtp = smtp; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    @Value("${spring.mail.host}") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    public void setHost(String host) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        SendEmailUtils.host = host; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    @Value("${spring.mail.port}") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    public void setPort(String port) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        SendEmailUtils.port = port; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    @Value("${spring.mail.properties.mail.smtp.auth}") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    public void setAuth(String auth) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        SendEmailUtils.auth = auth; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    @Value("${spring.mail.timeout}") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    public void setTimeout(String timeout) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        SendEmailUtils.timeout = timeout; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    @Value("${spring.mail.password}") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    public void setPassword(String password) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        SendEmailUtils.password = password; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				} 
			 |