2012-08-16 354 views
1

我嘗試了android.I上的一個電子郵件應用程序,首先輸入用戶名和密碼
然後在下一個活動中,我將收件人地址主題和消息發送到電子郵件。 我得到的錯誤的javax認證失敗。這裏是我的郵件認證和發送按鈕呼叫發送code.OnClick功能該類javax身份驗證失敗

public class MailHandler { 
final String username; 
final String password; 
public MailHandler(String username,String password){ 
    this.username=username; 
    this.password=password; 

} 

public void sendMail(String Sub,String msg,String sender,String cc,String to) { 
    Properties props = new Properties(); 
    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"); 

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

    try { 

     Message message = new MimeMessage(session); 
     message.setFrom(new InternetAddress(sender)); 
     message.setRecipients(Message.RecipientType.TO, 
      InternetAddress.parse(to)); 
     message.setSubject(Sub); 
     message.setText(msg); 

     Transport.send(message); 

     System.out.println("Done"); 

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

回答

1

你的代碼工作。我複製它編譯並使用我的gmail憑據運行它。你確定你使用正確的gmail憑證發送郵件嗎?

MailHandler m = new MailHandler("[email protected]", "myPassword"); 
m.sendMail("Test", "Testing", "[email protected]", "[email protected]", "[email protected]"); 

//運行後,我檢查了我的工作郵件,看到了郵件。

如果我使用無效的密碼,我會得到以下的statcktrace。這就是你所看到

535 5.7.1 http://support.google.com/mail/bin/answer.py?answer=14257 jl8sm4152932obb.18 

    at MailHandler.sendMail(MailHandler.java:50) 
     at MailHandler.main(MailHandler.java:56) 
Caused by: javax.mail.AuthenticationFailedException: 535-5.7.1 Username and Password not accepted. Learn more at 
535 5.7.1 http://support.google.com/mail/bin/answer.py?answer=14257 jl8sm4151848obb.18 
    at com.sun.mail.smtp.SMTPTransport$Authenticator.authenticate(SMTPTransport.java:823) 
    at com.sun.mail.smtp.SMTPTransport.authenticate(SMTPTransport.java:756) 
    at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:673) 
    at javax.mail.Service.connect(Service.java:317) 
    at javax.mail.Service.connect(Service.java:176) 
    at javax.mail.Service.connect(Service.java:125) 
    at javax.mail.Transport.send0(Transport.java:194) 
    at javax.mail.Transport.send(Transport.java:124) 
    at MailHandler.sendMail(MailHandler.java:45) 
    ... 1 more 
+0

是的我得到這些錯誤 – ayushman999 2012-08-16 18:00:27

2

一個簡單的解決方案是使用最後String參數,如 public void sendMail(final String username ,final String password);

+0

奇怪。這似乎解決了我的問題。 – 2015-07-29 03:23:07