Pu Zhibing
6 天以前 4c99ee7028c3fe58a2cd4b8273b22c75c45574fc
ManagementIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/EmailUtil.java
@@ -5,6 +5,7 @@
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;
import java.io.UnsupportedEncodingException;
import java.util.Date;
import java.util.Properties;
@@ -12,85 +13,158 @@
 * 邮件工具类
 */
public class EmailUtil {
    /*
     * gmail邮箱SSL方式
     */
    private static void gmailssl(Properties props) {
        final String SSL_FACTORY = "javax.net.ssl.SSLSocketFactory";
        props.put("mail.debug", "true");
        props.put("mail.smtp.host", "smtp.gmail.com");
        props.put("mail.smtp.ssl.enable", "true");
        props.put("mail.smtp.socketFactory.class", SSL_FACTORY);
        props.put("mail.smtp.port", "465");
        props.put("mail.smtp.socketFactory.port", "465");
        props.put("mail.smtp.auth", "true");
    }
    //gmail邮箱的TLS方式
    private static void gmailtls(Properties props) {
        props.put("mail.smtp.auth", "true");
        props.put("mail.smtp.starttls.enable", "true");
        props.put("mail.smtp.host", "smtp.gmail.com");
        props.put("mail.smtp.port", "587");
    }
    /**
     * 创建邮件内容
     *
     * @param sentToEmail 接收人邮箱
     * @param subject     设置邮件主题
     * @param content     内容
     * @return
     * @throws Exception
     */
    public static boolean send(String sentToEmail, String subject, String content) throws Exception {
        //1.创建一封邮件的实例对象
        Properties props = new Properties();
        //选择ssl方式
        gmailssl(props);
        final String username = "southwindservice@gmail.com";// gmail 邮箱
        final String password = "ogsntijmguisoiuk";// Google应用专用密码
        // 当做多商户的时候需要使用getInstance, 如果只是一个邮箱发送的话就用getDefaultInstance
        // Session.getDefaultInstance 会将username,password保存在session会话中
        // Session.getInstance 不进行保存
        Session session = Session.getInstance(props,
                new Authenticator() {
                    protected PasswordAuthentication getPasswordAuthentication() {
                        return new PasswordAuthentication(username, password);
                    }
                });
        MimeMessage msg = new MimeMessage(session);
        //2.设置发件人地址
        msg.setFrom(new InternetAddress(sentToEmail));
        /**
         * 3.设置收件人地址(可以增加多个收件人、抄送、密送),即下面这一行代码书写多行
         * MimeMessage.RecipientType.TO:发送
         * MimeMessage.RecipientType.CC:抄送
         * MimeMessage.RecipientType.BCC:密送
         */
        msg.setRecipient(MimeMessage.RecipientType.TO, new InternetAddress(sentToEmail));
        //4.设置邮件主题
        msg.setSubject(subject, "UTF-8");
        // 6. 创建文本"节点"
        MimeBodyPart text = new MimeBodyPart();
        // 这里添加图片的方式是将整个图片包含到邮件内容中, 实际上也可以以 http 链接的形式添加网络图片
        text.setContent(content, "text/html;charset=UTF-8");
        // 7. (文本+图片)设置 文本 和 图片"节点"的关系(将 文本 和 图片"节点"合成一个混合"节点")
        MimeMultipart mm_text_image = new MimeMultipart();
        mm_text_image.addBodyPart(text);
        mm_text_image.setSubType("related");    // 关联关系
        // 11. 设置整个邮件的关系(将最终的混合"节点"作为邮件的内容添加到邮件对象)
        msg.setContent(mm_text_image);
        //设置邮件的发送时间,默认立即发送
        msg.setSentDate(new Date());
        Transport transport = session.getTransport();
        transport.connect();
        transport.sendMessage(msg, msg.getAllRecipients());
        transport.close();
        return true;
    }
   //gmail邮箱的TLS方式
   private static void gmailtls(Properties props) {
      props.put("mail.smtp.auth", "true");
      props.put("mail.smtp.starttls.enable", "true");
      props.put("mail.smtp.host", "smtp.gmail.com");
      props.put("mail.smtp.port", "587");
   }
   /**
    * 创建邮件内容
    *
    * @param sentToEmail 接收人邮箱
    * @param subject     设置邮件主题
    * @param content     内容
    * @return
    * @throws Exception
    */
   public static boolean send(String sentToEmail, String subject, String content) throws Exception {
      //1.创建一封邮件的实例对象
      Properties props = new Properties();
      //选择ssl方式
      gmailssl(props);
      final String displayName = "I-GO";//昵称
      final String username = "i-gotech@i-go.group";// gmail 邮箱
      final String password = "wpwfkrlvridoayyh";// Google应用专用密码
      Session session = Session.getInstance(props,
            new Authenticator() {
               protected PasswordAuthentication getPasswordAuthentication() {
                  return new PasswordAuthentication(username, password);
               }
            });
      // 创建默认的MimeMessage对象
      MimeMessage message = new MimeMessage(session);
      String nick = "";
      try {
         nick = javax.mail.internet.MimeUtility.encodeText(displayName);
      } catch (UnsupportedEncodingException e) {
         e.printStackTrace();
      }
      // 设置发件人
      message.setFrom(new InternetAddress(nick + " <" + username + ">"));
      // 设置收件人
      message.addRecipient(Message.RecipientType.TO, new InternetAddress(sentToEmail));
      // 设置邮件主题
      message.setSubject(subject, "UTF-8");
      // 设置邮件内容
      MimeBodyPart text = new MimeBodyPart();
      text.setContent(content, "text/html;charset=UTF-8");
      MimeMultipart mimeMultipart = new MimeMultipart();
      mimeMultipart.addBodyPart(text);
      mimeMultipart.setSubType("related");
      message.setContent(mimeMultipart);
      //设置邮件的发送时间,默认立即发送
      message.setSentDate(new Date());
      // 发送消息
      Transport.send(message);
      System.out.println("Sent message successfully....");
      return true;
   }
   /*
    * gmail邮箱SSL方式
    */
   private static void gmailssl(Properties props) {
      final String SSL_FACTORY = "javax.net.ssl.SSLSocketFactory";
      props.put("mail.debug", "true");
      props.put("mail.smtp.host", "smtp.gmail.com");
      props.put("mail.smtp.ssl.enable", "true");
      props.put("mail.smtp.socketFactory.class", SSL_FACTORY);
      props.put("mail.smtp.port", "465");
      props.put("mail.smtp.socketFactory.port", "465");
      props.put("mail.smtp.auth", "true");
   }
   public static String getWeek(int language, int i) {
      String week = "";
      if (language == 1) {
         switch (i) {
            case 1:
               week = "星期一";
               break;
            case 2:
               week = "星期二";
               break;
            case 3:
               week = "星期三";
               break;
            case 4:
               week = "星期四";
               break;
            case 5:
               week = "星期五";
               break;
            case 6:
               week = "星期六";
               break;
            case 7:
               week = "星期天";
               break;
         }
      } else if (language == 2) {
         switch (i) {
            case 1:
               week = "Monday";
               break;
            case 2:
               week = "Tuesday";
               break;
            case 3:
               week = "Wednesday";
               break;
            case 4:
               week = "Thursday";
               break;
            case 5:
               week = "Friday";
               break;
            case 6:
               week = "Saturday";
               break;
            case 7:
               week = "Sunday";
               break;
         }
      } else {
         switch (i) {
            case 1:
               week = "lundi";
               break;
            case 2:
               week = "Mardi mardi ";
               break;
            case 3:
               week = "mercredi";
               break;
            case 4:
               week = "jeudi";
               break;
            case 5:
               week = "vendredi";
               break;
            case 6:
               week = "Samedi samedi";
               break;
            case 7:
               week = "dimanche";
               break;
         }
      }
      return week;
   }
}