2014-09-03 3 views
-3

Я делаю приложение для Android, в котором мне нужно отправить текст по почте, я пробовал много кодов, но они работают в проекте java, но не в проекте Android, я искал и пробовал почти все сообщения здесь, а также везде в Интернете, но никто не работает, может кто-нибудь, пожалуйста, дать мне рабочий код для отправки почты с помощью java mail API в android, я почти завершил свое приложение, кроме этой почты. поэтому, пожалуйста, помогите мне выйти из этой проблемы.отправка почты с помощью приложения android с помощью javamail api без взаимодействия с пользователем

ошибка LogCat выглядит следующим образом: -

09-03 22: 41: 58,636: DEBUG/SntpClient (58): время Сбой запроса: java.net.SocketException: Семейство адресов не поддерживается протоколом

и самое интересное заключается в том, что мое приложение получать различные ошибки на разных устройствах (printstack ошибок), , когда я запустить приложение на эмуляторе, то я получаю ошибку как

«не удалось подключиться к SMTP хост: smtp.gamil. com, порт: 587 "

и

, когда я запустить приложение на моем андроида мобильный телефон, то я получаю сообщение об ошибке, как: - «(? Отсутствующего разрешения INTERNET) Permission Denied»

и я уже дает разрешение INTERNET в файл манифеста.

код, который я уже попробовал это на следующей ссылке: -

Визит Cant send mail from android app using java mail api

и

Визит https://stackoverflow.com/questions/24088195/application-has-closed-unexpecteadly-forse-closed

+0

Я работаю над учебником, чтобы показать, как это сделать; между тем, вы должны скачать commons-email.jar, mail.jar, activation.jar и файлы дополнительных.jar, а затем написать свой собственный клиент. – Eenvincible

+0

yes sir Я загрузил 3 файла jar и добавил их в свой проект, но я получаю сообщение об ошибке «Не удалось подключиться к SMTP-хосту: smtp.gamil.com, порт: 587 «на эмуляторе и« разрешено ли разрешение (отсутствует разрешение INTERNET?) »на мобильном телефоне Android –

+0

да, я дал как разрешение ИНТЕРНЕТ, так и разрешение ACCESS_NETWORK_STATE :) –

ответ

0

Вот как вы можете это сделать:

После вы загрузили и добавили эти файлы jar: commons-email.jar, mail.jar, ac tivation.jar и additional.jar, вы должны иметь возможность отправлять письма в фоновом режиме.

  1. Сначала создайте AsyncTask, чтобы вы могли отправить электронное письмо в фоновом режиме. Затем внутри doInBackground, добавьте следующий код - замените значения по мере необходимости.

    public class EmailSenderAsync extends AsyncTask <String, Void, Boolean> { 
    
        private HtmlEmail email; 
    
    
        @Override 
        protected Boolean doInBackground(String... params) 
        { 
        String textMsg; 
        try { 
         String userEmail = params[0]; 
         String message = param[1]; 
    
         email = new HtmlEmail(); 
    
         email.setAuthenticator(new DefaultAuthenticator("[email protected]", "yourpasswordhere")); 
    
         email.setSmtpPort(587); 
    
         email.setHostName("smtp.gmail.com"); 
    
         email.setDebug(true); 
    
    
         email.addTo(userEmail, "Whatever you want here"); 
    
         email.setFrom("[email protected]", "Your business name"); 
    
         email.setSubject("Your email subject here"); 
    
    
         email.getMailSession().getProperties().put("mail.smtps.auth", "true"); 
    
         email.getMailSession().getProperties().put("mail.debug", "true"); 
    
         email.getMailSession().getProperties().put("mail.smtps.port", "587"); 
    
         email.getMailSession().getProperties().put("mail.smtps.socketFactory.port", "587"); 
    
         email.getMailSession().getProperties().put("mail.smtps.socketFactory.class", "javax.net.ssl.SSLSocketFactory"); 
    
         email.getMailSession().getProperties().put("mail.smtps.socketFactory.fallback", "false"); 
    
         email.getMailSession().getProperties().put("mail.smtp.starttls.enable", "true"); 
    
         email.setTextMsg(message); 
    
         email.send(); 
    
    
         return true; 
    
        } catch (Exception e){ 
    
         return false; 
        } 
    
    } 
    

Теперь вы можете вызвать его из везде, где вам необходимо отправить по электронной почте, делая это:

new EmailSenderAsync().execute("[email protected]", "Thank you for contacting us this morning"); 

Это позволит решить вашу проблему.

Удачи, и я надеюсь, что это поможет.

+0

Я думаю, что «защищенный Boolean doInBackground (String ... params)», мы должны написать как «protected Boolean doInBackground (String [] params) ", я прав г-н Eenvincible ?? или если я ошибаюсь, то объясните мне правильное значение в качестве параметров –

+0

эй, его работа, спасибо много чувак :) ты сделал мой день –

+0

Обычно, если это сработало, вы отметите это как ответ, приняв его. Спасибо, и я тоже рад, что смог помочь – Eenvincible

Смежные вопросы