【发布时间】:2012-02-12 04:16:57
【问题描述】:
我是 Android 编码新手。我的要求是我想使用 Android 代码发送电子邮件。
请指导我。
【问题讨论】:
-
这个问题在stackoverflow上已经被问了一百次了。
我是 Android 编码新手。我的要求是我想使用 Android 代码发送电子邮件。
请指导我。
【问题讨论】:
这里是解决方案::
Intent i = new Intent(Intent.ACTION_SEND);
i.setType("text/plain");
i.putExtra(Intent.EXTRA_EMAIL , new String[]{"recipient@example.com"});
i.putExtra(Intent.EXTRA_SUBJECT, "subject of email");
i.putExtra(Intent.EXTRA_TEXT , "body of email");
try {
startActivity(Intent.createChooser(i, "Send mail..."));
} catch (android.content.ActivityNotFoundException ex) {
Toast.makeText(MyActivity.this, "There are no email clients installed.", Toast.LENGTH_SHORT).show();
}
【讨论】:
您可以使用 .Net、Java 或 PHP 编写服务器端脚本。使用以下参数向 domain.com/sendemail.php 发出 Web 请求(异步):
然后,服务器端脚本可以为您处理这一切,并让您在电子邮件布局上更加灵活,如果需要更改某些内容,则无需执行应用更新。这也意味着电子邮件可以来自应用程序,而不是让他们保持匿名的个人用户(这可能有用也可能没用,正如你没有说的那样)。
要完成这一切,请查看Painless Threading article by Android,然后查看如何发出网络请求。
选项 B:
像这样使用 Intent:
Intent emailIntent = new Intent(android.content.Intent.ACTION_SEND);
String[] recipients = new String[]{"my@email.com", "",};
emailIntent.putExtra(android.content.Intent.EXTRA_EMAIL, recipients);
emailIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, "Test");
emailIntent.putExtra(android.content.Intent.EXTRA_TEXT, "This is email's message");
emailIntent.setType("text/plain");
startActivity(Intent.createChooser(emailIntent, "Send mail..."));
参考:http://thedevelopersinfo.wordpress.com/2009/10/22/email-sending-in-android/
【讨论】:
您可以直接从代码发送电子邮件:
String to = "abcd@gmail.com";
String from = "web@gmail.com";
Properties properties = System.getProperties();
properties.setProperty("mail.smtp.host", SMPT_HOSTNAME);
Session session = Session.getInstance(properties, new Authenticator() {
@Override
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(USERNAME, PASSWORD);
}
});
try {
MimeMessage message = new MimeMessage(session);
message.setFrom(new InternetAddress(from));
message.addRecipient(Message.RecipientType.TO, new InternetAddress(
to));
message.setSubject("This is the Subject Line!");
message.setText("This is actual message");
Transport.send(message);
System.out.println("Sent message successfully....");
} catch (MessagingException mex) {
mex.printStackTrace();
}
【讨论】: