【问题标题】:send email without user interaction in android geting auth error在没有用户交互的情况下在android中发送电子邮件得到身份验证错误
【发布时间】:2015-08-14 07:19:28
【问题描述】:

大家好,下面的代码我写的是在 android 中发送电子邮件,但我收到 auth 错误,请帮我解决这个问题

    private void sendMail(String email, String subject, String messageBody,File file) {
        Session session = createSessionObject();
//        new UpdateTask().execute();
        try {
            Message message = createMessage(email, subject, messageBody, session,file);

            new UpdateTask().execute(message);

        } catch (AddressException e) {
            e.printStackTrace();
        } catch (MessagingException e) {
            e.printStackTrace();
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        }
    }

    private Message createMessage(String email, String subject, String messageBody, Session session,File file) throws MessagingException, UnsupportedEncodingException {
        Message message = new MimeMessage(session);
        message.setFrom(new InternetAddress("XXXXXXXX@gmail.com", "Sound Check"));
        message.addRecipient(Message.RecipientType.TO, new InternetAddress(email, email));
        message.setSubject(subject);
        message.setText(messageBody);
        /**
         * Attach a file in mail 
         */
        Multipart multipart = new MimeMultipart();
        BodyPart messageBodyPart = new MimeBodyPart();
        DataSource source = new FileDataSource(file);
        messageBodyPart.setDataHandler(new DataHandler(source));
        messageBodyPart.setFileName(file.getName());

        multipart.addBodyPart(messageBodyPart);
        message.setContent(multipart);
        return message;
    }

    private Session createSessionObject() {
           Properties props = new Properties();   
           props.setProperty("mail.transport.protocol", "smtp");   
           props.setProperty("mail.host", "smtp.gmail.com");   
           props.put("mail.smtp.auth", "true");   
           props.put("mail.smtp.port", "465");   
           props.put("mail.smtp.socketFactory.port", "465");   
           props.put("mail.smtp.socketFactory.class",   
                   "javax.net.ssl.SSLSocketFactory");   
           props.put("mail.smtp.socketFactory.fallback", "false");   
           props.setProperty("mail.smtp.quitwait", "false");   

        return Session.getInstance(props, new javax.mail.Authenticator() {
            protected PasswordAuthentication getPasswordAuthentication() {
                return new PasswordAuthentication("xxxxxxxxxx@gmail.com", "*********");
            }
        });
    }
}
class UpdateTask extends AsyncTask<Message,String,String> {



    @Override
    protected String doInBackground(Message... params) {
        // TODO Auto-generated method stub
        Message message = params[0];
         try {

                Transport.send(message);

            } catch (AddressException e) {
                e.printStackTrace();
            } catch (MessagingException e) {
                e.printStackTrace();
            }

        return null;
    }

}

出现这样的错误:

08-14 12:09:23.365: W/System.err(30695): javax.mail.AuthenticationFailedException
08-14 12:09:23.365: W/System.err(30695):    at javax.mail.Service.connect(Service.java:319)
08-14 12:09:23.365: W/System.err(30695):    at javax.mail.Service.connect(Service.java:169)
08-14 12:09:23.365: W/System.err(30695):    at javax.mail.Service.connect(Service.java:118)
08-14 12:09:23.365: W/System.err(30695):    at javax.mail.Transport.send0(Transport.java:188)
08-14 12:09:23.365: W/System.err(30695):    at javax.mail.Transport.send(Transport.java:118)
08-14 12:09:23.365: W/System.err(30695):    at com.example.callrecoder.UpdateTask.doInBackground(RecordService.java:384)

同时收到如下邮件:

sub : 登录尝试被阻止

邮件:

你好名字 有些人只是尝试登录不符合现代安全标准的 Google 帐户“mailid”表单应用程序。

【问题讨论】:

    标签: java android gmail jakarta-mail


    【解决方案1】:

    这些是JavaMail中AuthenticationFailedException最常见的事情

    1. 首先,修复这些common mistakes.
    2. 开启Session debugging查看协议跟踪是否给出 关于问题的更多线索。
    3. 你可能需要enable access for less secure apps.这个错误可能来自谷歌安全...这可以通过启用不太安全的“打开”来解决

    完成所有这些步骤后,您仍然面临问题吗?我是来帮你的!!

    【讨论】:

    • 很乐意提供帮助 :) 如果它对您有用,请接受我的回答@K.Muthu
    • 你也应该修正常见的错误。真的。它会让你的程序更简单、更正确。
    猜你喜欢
    • 2015-06-29
    • 2020-10-28
    • 2016-01-06
    • 1970-01-01
    • 1970-01-01
    • 2011-11-01
    • 2011-12-29
    • 2012-12-02
    • 2016-03-28
    相关资源
    最近更新 更多