プログラミング言語や環境設定を中心としたパソコン関連の技術メモです。
主にシステム開発中に調べたことをメモしています。TIPS的な位置付けで、気が向いたときにちまちま更新していきます。
Java、JavaMailでメール送信(pop before smtp)
よくあるやりたいこと、メール送信。
この記事は「Java、JavaMailでメール送信(認証なし)」を読んだ人向けです。

さて、昨今のセキュリティ事情だと認証も無しに使えるsmtpサーバなんてほとんど無い。
と言う訳で認証にも対応してやらんといかん訳です。
今回はpop before smtpに対応してみましょーか。

Java、JavaMailでメール送信(認証なし)」の「3.」を
こんな感じにしてやればOKφ(--)

  package hoge.util;
  
  import java.util.*;
  import javax.mail.*;
  import javax.mail.internet.*;
  
  /**
   * メール送信用クラス
   * 
   */
  public class MailUtil {
      /**
       * メールを送信する
       * 
       * @param     toAddress  String 送信先メールアドレス
       * @param     msgStr  String 送信メールメッセージ
       * @param     subjectStr  String 件名
       * @param     fromAddress  String 送信元メールアドレス
       * @param     smtpHost  String SMTPサーバ
       * @param     smtpPort  String 送信ポート番号
       * @param     debug  boolean デバッグモード
       * @return    retValue  Boolean メール送信結果
       */
      public static Boolean send(String toAddress, String msgStr, String subjectStr
                          ,String fromAddress, String smtpHost
                          ,String smtpPort, boolean debug){
          /* 戻り値 */
          Boolean retValue = true;
      
          try{
  

              /* pop before smtp 対策 start */
              String pop3Host = [POP3メールサーバ];
              String pop3Id = [POP3認証ID];
              String pop3Pwd = [POP3認証パスワード];
              /* pop before smtp 対策 end */

          
              
              Properties props = new Properties();
              props.put("mail.smtp.host", smtpHost);
              props.put("mail.smtp.port", smtpPort);
              if (debug){
                  props.put("mail.debug", true);
              }
              Session session = Session.getInstance(props, null);
          
              session.setDebug(debug);
      

              /*pop before smtp 対策 start */
              Store store = session.getStore("pop3");
              store.connect(pop3Host, pop3Id, pop3Pwd);
              /*pop before smtp 対策 end */

      
              MimeMessage msg = new MimeMessage(session);
              msg.setFrom(new InternetAddress(fromAddress));
              InternetAddress[] address = {new InternetAddress(toAddress)};
              msg.setRecipients(Message.RecipientType.TO, address);
              msg.setSubject(subjectStr, "iso-2022-jp");
  
              msg.setSentDate(new Date());
              
              msg.setText(msgStr, "iso-2022-jp");
          
              Transport.send(msg);
          }catch(Exception ex){
              ex.printStackTrace();
              retValue = false;
          }
          return retValue;
      }
  }


単純に送信前にPOP3サーバにアクセスしちゃえばOKです。
スポンサーリンク
 
このエントリーをはてなブックマークに追加 

category:● Java  thema:システム開発 - genre:コンピュータ  Posted by ササキマコト 

  関連記事