Я пытаюсь отправить электронное письмо автоматически, без подтверждения пользователя в моем приложении для Android. Я пытаюсь работать с Javamail, но когда я пытаюсь установить приложение на своем телефоне, оно закрывается типичным сообщением Android "APP STOPPED, Open again".
Мой код:
ОТПРАВИТЬ ПОЧТОВЫЙ КЛАСС:
package com.android.mdw.demo;
import java.util.Properties;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import android.util.Log;
public class EnviarEmail {
public static String emailEnvio = "XXX@gmail.com";
public static String passwordEmailEnvio = "@XXX";
public void EnviarEmail(String Mensaje, String Asunto, String email) {
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(emailEnvio, passwordEmailEnvio);
}
});
try {
Message message = new MimeMessage(session);
message.setFrom(new InternetAddress(emailEnvio));
message.setRecipients(Message.RecipientType.TO,
InternetAddress.parse(email));
message.setSubject(Asunto);
message.setText(Mensaje);
Transport.send(message);
} catch (MessagingException e) {
Log.w("ERROR", "No se ha podido enviar el email de confirmación.");
}
}
}
УВЕДОМЛЕНИЕ ПОЧТОВЫЙ КЛАСС:
package com.android.mdw.demo;
public class EmailAviso {
public void EmailAviso () {
String Mensaje = "CUERPO";
String Asunto = "ASUNTO";
String email = "AQUIENVA@gmail.com";
EnviarEmail EnviarEmail = new EnviarEmail();
EnviarEmail.EnviarEmail(Mensaje, Asunto, email);
}
}
ВЫДЕРЖКА ИЗ ГЛАВНОГО КЛАССА:
boolean PRUEBA=true;
boolean PRUEBA1=true;
if(PRUEBA==true && PRUEBA1==true) {
EmailAviso EmailAviso = new EmailAviso();
EmailAviso.EmailAviso();
}
И журнал, который я получаю в AS:
E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.android.mdw.demo, PID: 18001
android.os.NetworkOnMainThreadException
at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1303)
at java.net.Inet6AddressImpl.lookupHostByName(Inet6AddressImpl.java:86)
at java.net.Inet6AddressImpl.lookupAllHostAddr(Inet6AddressImpl.java:74)
at java.net.InetAddress.getLocalHost(InetAddress.java:816)
at javax.mail.internet.InternetAddress.getLocalAddress(InternetAddress.java:517)
at javax.mail.internet.UniqueValue.getUniqueMessageIDValue(UniqueValue.java:99)
at javax.mail.internet.MimeMessage.updateMessageID(MimeMessage.java:2054)
at javax.mail.internet.MimeMessage.updateHeaders(MimeMessage.java:2076)
at javax.mail.internet.MimeMessage.saveChanges(MimeMessage.java:2042)
at javax.mail.Transport.send(Transport.java:117)
at com.android.mdw.demo.EnviarEmail.EnviarEmail(EnviarEmail.java:41)
at com.android.mdw.demo.EmailAviso.EmailAviso(EmailAviso.java:10)
at com.android.mdw.demo.Main.onSensorChanged(Main.java:77)
at android.hardware.SystemSensorManager$SensorEventQueue.dispatchSensorEvent(SystemSensorManager.java:699)
at android.os.MessageQueue.nativePollOnce(Native Method)
at android.os.MessageQueue.next(MessageQueue.java:323)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:6077)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:866)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:756)