通过程序从最近的Android系统发送电子邮件
我已经阅读了这里的链接。我曾经尝试过这种方法,例如,当用户按下按钮时,通过编程发送电子邮件 它在2.3.7版本的Android上也能工作 问题是,当尝试在较新版本的Android(如4.1.2)上启动应用程序时,它什么也做不了。在这些设备上会显示toast,但不会发送电子邮件 因此,我尝试了这段代码,但它也不起作用通过程序从最近的Android系统发送电子邮件,android,jakarta-mail,sendmail,android-internet,Android,Jakarta Mail,Sendmail,Android Internet,我已经阅读了这里的链接。我曾经尝试过这种方法,例如,当用户按下按钮时,通过编程发送电子邮件 它在2.3.7版本的Android上也能工作 问题是,当尝试在较新版本的Android(如4.1.2)上启动应用程序时,它什么也做不了。在这些设备上会显示toast,但不会发送电子邮件 因此,我尝试了这段代码,但它也不起作用 ... sendButton.setOnClickListener(new OnClickListener() { @Override public
...
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 = "account@gmail.com";
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;
}
}
有什么帮助吗?您可能发现了这个错误
android.os.NetworkOnMainThreadException
看到这个了吗
使用这个你可能发现了这个错误
android.os.NetworkOnMainThreadException
看到这个了吗
使用这个我认为你最好弄清楚为什么链接问题中的解决方案(看起来很完整)在4.1.2中不起作用,而不是使用新的基于SMTP的解决方案。您试过调试该版本吗?@antlersoft是调试时,在按下应发送电子邮件的底部时,调试器说:Thread[android.hardware.SystemSensorManager$SensorThread](正在运行)这正是我进入包含该按钮的页面时比较的消息我已解决问题添加:props.put(“mail.smtp.connectiontimeout”、“t1”);props.put(“mail.smtp.timeout”、“t2”);where String t1=“2000”;String t2=“1000”;我认为您最好弄清楚链接问题中的解决方案(看起来相当完整)的原因在4.1.2中无法使用新的基于SMTP的解决方案。您尝试过调试该版本吗?@antlersoft是调试时,在按下应发送电子邮件的底部时,调试器显示:Thread[android.hardware.SystemSensorManager$SensorThread](正在运行)这正是当我进入包含该按钮的页面时比较的消息。我已经解决了添加的问题:props.put(“mail.smtp.connectiontimeout”,“t1”);props.put(“mail.smtp.timeout”,“t2”);其中String t1=“2000”;String t2=“1000";嘿谢谢你的帮助。我没有发现任何错误。它就是不起作用!我试图在后台执行它(如[此处]所示),但它也不起作用。为什么不使用emailIntent?嘿谢谢你的帮助。我没有发现任何错误。它就是不起作用!我试图在后台执行它(如[此处]所示),但它也不起作用。为什么不使用emailIntent?