通过使用此代码,我可以直接获取gmail撰写页面,但我想直接发送此邮件,而不是在gmail页面上。意思是当我点击我的活动发送按钮时,它应该直接将邮件发送到带有go go on gmail撰写页面的特定收据。
protected void sendEmail(){
String[] recipients = { recieverId.getText().toString() };
Intent email = new Intent(Intent.ACTION_SEND, Uri.parse("mailto:"));
email.setType("message/rfc822");
email.putExtra(Intent.EXTRA_EMAIL, recipients);
email.putExtra(Intent.EXTRA_SUBJECT, mailSubject.getText().toString());
email.putExtra(Intent.EXTRA_TEXT, mailBody.getText().toString());
final PackageManager pm = getPackageManager();
final List<ResolveInfo> matches = pm.queryIntentActivities(email, 0);
ResolveInfo best = null;
for (final ResolveInfo info : matches)
if (info.activityInfo.packageName.endsWith(".gm") ||
info.activityInfo.name.toLowerCase().contains("gmail"))
best = info;
if (best != null)
email.setClassName(best.activityInfo.packageName, best.activityInfo.name);
try {
startActivity(email);
} catch (android.content.ActivityNotFoundException ex) {
Toast.makeText(getApplicationContext(),
"No email client installed.", Toast.LENGTH_LONG).show();
}
}
答案 0 :(得分:1)
不,你无法在没有用户干预的情况下从gmail发送邮件,这样做会引发安全问题。只有您可以像上面那样通过意图调用该应用程序。否则你可以使用任何java邮件API来发送邮件。
答案 1 :(得分:1)
如果通过应用程序发送,则需要用户干预。
无需用户干预,您可以按如下方式发送:
从客户端apk发送电子邮件。在这里mail.jar,activation.jar需要发送java电子邮件。如果添加这些jar,可能会增加APK大小。 Link
或者,您可以在服务器端代码中使用Web服务,该代码将使用相同的mail.jar和activation.jar来发送电子邮件。您可以通过asynctask调用Web服务并发送电子邮件。请参阅相同的链接