2012-08-16 358 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