Я читал question здесь. Я пробовал этот метод для отправки электронной почты программно, когда, например, пользователь нажимает кнопку.Отправляйте по электронной почте программно из последних Android
Работает над версией Android 2.3.7.
Проблема в том, что при попытке запустить приложение на более поздней версии Android (например, 4.1.2) это ничего не значит. На этих устройствах появляется тост, но электронная почта не отправляется.
Итак, я пробую этот код, но он не работает.
...
sendButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
//Read EditText
EditText text = (EditText)findViewById(R.id.editText1);
String my_mail = text.getText().toString().toLowerCase();
if (my_mail.matches("")){
Toast toast = Toast.makeText(context, "Please insert a valid email address!", Toast.LENGTH_LONG);
toast.show();
}
//send mail
try {
WebSendMail(my_mail);
Toast toast = Toast.makeText(context, "Email sent!", Toast.LENGTH_LONG);
toast.show();
} catch (Exception e) {
Log.e("SendMail", e.getMessage(), e);
}
}
});
public static boolean WebSendMail(String mail){
//email sender parameter
String smtpHost = "smtp.gmail.com";
String addressFrom = "[email protected]";
String login = addressFrom;
String password = "password";
String subject = "Subject!";
String message = "html code";
try {
Properties props = new Properties();
props.setProperty("mail.host", smtpHost);
props.setProperty("mail.smtp.port", "587");
props.setProperty("mail.smtp.auth", "true");
props.setProperty("mail.smtp.starttls.enable", "true");
Authenticator auth = new SMTPAuthenticator(login, password);
Session session = Session.getInstance(props, auth);
MimeMessage msg = new MimeMessage(session);
msg.setText(message);
msg.setSubject(subject);
msg.setContent(message, "text/html");
msg.setFrom(new InternetAddress(addressFrom));
msg.addRecipient(Message.RecipientType.TO, new InternetAddress(mail));
Transport.send(msg);
return true;
} catch (Exception ex) {
return false;
}
}
Любая помощь?
Я думаю, вы бы лучше выяснить, почему решение в связанном вопросе (который кажется довольно полным) не работает в 4.1.2, чем собирается с новым решением на основе SMTP. Вы пробовали отлаживать эту версию? – antlersoft
@antlersoft да при отладке, при нажатии на нижнюю часть, которая должна отправлять электронную почту, отладчик говорит: ** Тема [<12> android.hardware.SystemSensorManager $ SensorThread] (Бег) ** Это точно сообщение, которое сравнивается, когда я вхожу в страница, содержащая эту кнопку –
Я решил проблему добавить: * props.put ("mail.smtp.connectiontimeout", "t1"); * * props.put ("mail.smtp.timeout", "t2 "); * где String t1 =" 2000 "; Строка t2 = "1000"; –