【问题标题】:How to send mail through gmail directly with out opening gmail compose page如何在不打开 gmail 撰写页面的情况下直接通过 gmail 发送邮件
【发布时间】:2014-07-30 09:01:00
【问题描述】:

通过使用此代码,我可以直接获取 gmail 撰写页面,但我想直接发送此邮件,而不会出现在 gmail 页面上。意味着当我点击我的活动发送按钮时,它应该直接将邮件发送到特定的收据,而不会在 gmail 撰写页面上进行。

受保护的无效 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();

    }

}

【问题讨论】:

标签: android email android-intent gmail jakarta-mail


【解决方案1】:

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

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

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

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-05-30
      • 2017-10-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-08-31
      • 1970-01-01
      相关资源
      最近更新 更多