2017-07-20 67 views
0

在以下會話對象中的代碼(PasswordAuthentication)我們必須提供什麼用戶名和密碼才能發送郵件?發件人的用戶名密碼或接收者的憑據? 我真的很困惑,我使用Java郵件發送郵件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

您需要發送發件人的憑據其Gmail的SMTP服務器進行身份驗證,然後它會發送電子郵件。

+0

好的如果我在數據庫中有表單詳細信息,並且希望通過代碼發送電子郵件中的詳細信息,我該怎麼做? 表示不存在具有憑據的發件人 – SFAH

+0

首先,您不應該直接在數據庫中輸入密碼。但是,無論如何,您可以查詢數據庫並使用該信息發送電子郵件。 – Sandeep

+0

該消息必須來自「某人」。該「某人」必須在郵件服務器上擁有一個帳戶。您的程序需要該「某人」的憑證,以便您可以登錄到郵件服務器併發送消息。 –