如何通过gmail直接发送邮件,打开gmail撰写页面

时间:2014-07-30 09:01:01

标签: android email android-intent gmail javamail

通过使用此代码,我可以直接获取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();

    }

}

2 个答案:

答案 0 :(得分:1)

不,你无法在没有用户干预的情况下从gmail发送邮件,这样做会引发安全问题。只有您可以像上面那样通过意图调用该应用程序。否则你可以使用任何java邮件API来发送邮件。

答案 1 :(得分:1)

如果通过应用程序发送,则需要用户干预。

无需用户干预,您可以按如下方式发送:

  1. 从客户端apk发送电子邮件。在这里mail.jar,activation.jar需要发送java电子邮件。如果添加这些jar,可能会增加APK大小。 Link

  2. 或者,您可以在服务器端代码中使用Web服务,该代码将使用相同的mail.jar和activation.jar来发送电子邮件。您可以通过asynctask调用Web服务并发送电子邮件。请参阅相同的链接