1. 程式人生 > >JavaMail 給多人傳送郵件

JavaMail 給多人傳送郵件

JavaMail傳送郵件 多人傳送

  1. 在我們開發過程中經常會用到郵件,比如 : 傳送通知,找回密碼 驗證碼  等等,再次總結了使用javaMail傳送郵件,無需單間james等郵件伺服器也可傳送郵件

  2. javaMail官網 在裡面可以找到詳細的文件以及案例和jar包

  3. 我們都知道在前後端互動都是有協議的,http協議,JavaMail也有自己的協議,SMTP/POP3和IMAP

  4. 使用javaMail前提是可以連線外網.

  5. 廢話不多說,直接上案例:

    1.   匯入依賴,在沒使用maven的話匯入相應的jar包,點此下載

      <dependency>
           <groupId>com.sun.mail</groupId>
           <artifactId>javax.mail</artifactId>
           <version>1.5.2</version>
      </dependency>

       

    2. 測試案例:這是一個模板工具

      package com.bgi.util;
      
      import org.springframework.core.io.ClassPathResource;
      
      import javax.mail.Address;
      import javax.mail.Session;
      import javax.mail.Transport;
      import javax.mail.internet.InternetAddress;
      import javax.mail.internet.MimeMessage;
      import java.io.IOException;
      import java.util.Date;
      import java.util.Properties;
      
      public class EmailUtil {
         //獲取屬性檔案中的值,建議把配置的資訊放到屬性檔案中,方便修改和獲取
          private static Properties properties = new Properties();
          static{
              try {
                 //加在屬性檔案
                  properties.load(new ClassPathResource("properties/email.properties").getInputStream());
              } catch (IOException e) {
              }
          }
          public static    String SMTPSERVER = properties.getProperty("smtp.server"); //從屬性檔案中獲取值其中key為smtp.server
          public static  String SMTPPORT = properties.getProperty("smtp.port");   //埠號 465  465  465   不是456
          public  static  String ACCOUT = properties.getProperty("smtp.account");//賬戶名:我的是163賬戶,此賬戶必須在設定中開啟授權碼授權
          public  static  String PWD = properties.getProperty("smtp.pwd");   //授權密碼
      
          public static String users = properties.getProperty("email.users");   //這裡是傳送給多個使用者多個使用者用都好分割
      [email protected]
      ,[email protected] public static void sendEmail(String content){ try { // 建立郵件配置 Properties props = new Properties(); props.setProperty("mail.transport.protocol", "smtp"); // 使用的協議(JavaMail規範要求) props.setProperty("mail.smtp.host", SMTPSERVER); // 發件人的郵箱的 SMTP 伺服器地址 props.setProperty("mail.smtp.port", SMTPPORT); props.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory"); props.setProperty("mail.smtp.auth", "true"); // 需要請求認證 props.setProperty("mail.smtp.ssl.enable", "true");// 開啟ssl // 根據郵件配置建立會話,注意session別導錯包 Session session = Session.getDefaultInstance(props); // 開啟debug模式,可以看到更多詳細的輸入日誌 session.setDebug(true); //建立郵件 MimeMessage message = createEmail(session,users,content); //將使用者和內容傳遞過來 //獲取傳輸通道 Transport transport = session.getTransport(); transport.connect(SMTPSERVER,ACCOUT, PWD); //連線,併發送郵件 transport.sendMessage(message, message.getAllRecipients()); transport.close(); } catch (Exception e) { e.printStackTrace(); } } public static MimeMessage createEmail(Session session,String users,String content) throws Exception { // 根據會話建立郵件 MimeMessage msg = new MimeMessage(session); // address郵件地址, personal郵件暱稱, charset編碼方式 InternetAddress fromAddress = new InternetAddress(ACCOUT, "中介軟體推送", "utf-8"); // 設定傳送郵件方 msg.setFrom(fromAddress); // 單個可以直接這樣建立 // InternetAddress receiveAddress = new InternetAddress(); // 設定郵件接收方 Address[] internetAddressTo = new InternetAddress().parse(users);
         //type:
      要被設定為 TO, CC 或者 BCC,這裡 CC 代表抄送、BCC 代表祕密抄送。舉例:Message.RecipientType.TO
              msg.setRecipients(MimeMessage.RecipientType.TO,  internetAddressTo);
              // 設定郵件標題
              msg.setSubject("測試標題", "utf-8");
              msg.setText(content);
              // 設定顯示的發件時間
              msg.setSentDate(new Date());
              // 儲存設定
              msg.saveChanges();
              return msg;
          }
      
      }

       

    3. email.properties

      smtp.server=smtp.163.com
      smtp.port=465
      [email protected]
      smtp.pwd=xxxxx
      
      [email protected],[email protected],[email protected]

       

    4. 163郵箱開啟授權:

         163郵箱示例 

    1. qq郵箱開啟授權: 點選生成授權碼,即可生成授權碼

image

 

到此已經可以傳送郵件了,如果需要新增附件,可以自行研究

轉載自:https://www.cnblogs.com/tianliuyang/p/9486420.html