2017-07-20 7 views
0

セッションオブジェクト(PasswordAuthentication)の次のコードでは、メールを送信するためにどのようなユーザー名とパスワードを入力する必要がありますか?送信者のユーザー名パスワードまたは受信者の資格情報? 私は本当に混乱しています、私はあなたがGmailのSMTPサーバが認証されると、それはメールをお送りします送信者の認証情報を送信する必要がJavaMailのセッション

public void sendMail(String email,String token) 
    { 
     // Recipient's email ID needs to be mentioned. 
      String to = email; 
      // Sender's email ID needs to be mentioned 
      // Assuming you are sending email through relay.jangosmtp.net 
      String host = "smtp.gmail.com"; 
      Properties props = new Properties(); 
      props.put("mail.smtp.auth", "true"); 
      props.put("mail.smtp.starttls.enable", "true"); 
      props.put("mail.smtp.host", host); 
      props.put("mail.smtp.port", "587"); 

      // Get the Session object. 
      Session session = Session.getInstance(props, 
      new javax.mail.Authenticator() { 
       protected PasswordAuthentication getPasswordAuthentication() { 
        return new PasswordAuthentication(username, password); 
      } 
      }); 

      try { 
      // Create a default MimeMessage object. 
      Message message = new MimeMessage(session); 

      // Set From: header field of the header. 
      message.setFrom(new InternetAddress("Issme-Customer-Service")); 

      // Set To: header field of the header. 
      message.setRecipients(Message.RecipientType.TO, 
        InternetAddress.parse(to)); 

      message.setSubject("Email Verification Of issme Account"); 

      message.setContent(
        "<h2>Email Verification </h2>" + 
        "<h3> Please goto the following URL to verify your ISSME account\n </h3> " + 
        token , "text/html; charset=utf-8"); 


      // Send message 
      Transport.send(message); 

      System.out.println("Sent message successfully...."); 

      } catch (MessagingException e) { 
      throw new RuntimeException(e); 
      } 
     } 
+0

なぜ受信者の資格情報になりますか?メールクライアントに設定したのと同じように、送信者のユーザー名とパスワードです。 – millimoose

+0

これがWebアプリケーションの場合、アプリケーションサーバーでJavaMailセッションを設定する方がよいでしょう。外部サービスへの接続は配備環境上の問題であり、それらのパラメータはハードコーディングされていてはなりません。 – millimoose

+0

SMTPサーバー(送信者)に認証できる資格情報を設定する必要があります –

答えて

1

にメールを送信するためにJavaのメールを使用しています。

+0

大丈夫です。フォームの詳細がデータベースにあり、その詳細を電子メールでコードから電子メールに送信するにはどうしたらいいですか? は、資格情報を持つ送信者がないことを意味します。 – SFAH

+0

まず、データベースにパスワードを直接設定しないでください。しかし、とにかくDBに照会し、その情報を使って電子メールを送ることができます。 – Sandeep

+0

メッセージは「誰か」から来ている必要があります。その "誰か"はメールサーバー上にアカウントを持っていなければなりません。あなたのプログラムは、メールサーバーにログインしてメッセージを送信できるように、その "誰か"の資格情報が必要です。 –