【问题标题】:How can I directly send an email via the default mail app on a device如何通过设备上的默认邮件应用程序直接发送电子邮件
【发布时间】:2014-02-22 23:37:58
【问题描述】:

我有一个类型的问题通常会让我说“你为什么要这样做”并假设它会被用于恶意目的,但是这里......

如何在没有用户交互的情况下发送电子邮件,而不实现我自己的电子邮件发件人?

在你们提出任何建议之前 - 我知道 Javamail 并且我之前使用过这种方法,所以如果需要,我会退回到这种方法。我也知道如何触发选择器以及如何open a compose screen directly。我想要的不是这些。

我的应用中有一个反馈表。 3 个文本字段和一个按钮。当用户点击按钮时,我将字段中的数据发送给自己,但为了节省进一步增加我的应用程序的大小,我想通过当前安装/默认的任何邮件应用程序发送邮件,所有这些都无需进一步的用户交互。

这可能吗?

【问题讨论】:

  • 我没有想到发送邮件的问题,好点。我将研究 Google 文档的想法,我认为调用 API 并按照您的建议接收该电子邮件可能是可行的。但是,由于这是一个相当普遍的问题,我仍然有兴趣看看是否有人知道如何做我实际问过的事情

标签: android email


【解决方案1】:

您可以使用手机的短信功能:

SmsManager sms = SmsManager.getDefault();
String myPhoneNumber = "800 333-1212";
String toEmailAddress = "foo@foo.com";
String myEmailBody = "Here is my email message";
sms.sendTextMessage( toEmailAddress,"1"+myPhoneNumber, myEmailBody, null, null);

当然,您的电子邮件看起来并不漂亮,但是... 另外不要忘记清单中的 SEND_SMS 权限。显然,这不适用于某些只有 wifi 而没有电话的平板电脑。

【讨论】:

  • 我要给这个答案赏金,只是因为它是我见过的最原始的解决方案(虽然不适合我)
【解决方案2】:

在您的条件下无法实现您想要实现的目标,但是您必须有很多选择才能以更清洁的方式实现相同的目标。

1.正如@Oliver 所提到的,使用像 ACRA 这样的库和服务。

2.实现一个简单的restful API并用它来发送你的数据,你可以使用像谷歌应用引擎这样的服务来更方便。

  1. 实现自己的电子邮件发件人,这根本不理想。

显然您的应用需要后端。

【讨论】:

  • 将此标记为未来访问者的正确答案,尽管我将赏金给了 Kristy,因为这是唯一尝试在没有交互的情况下执行此操作的答案。 (我只是不认为这对大多数人的情况来说是正确的解决方案)
【解决方案3】:

你不能。 Android 手机上没有默认邮件服务。通常会安装 Gmail,但并非所有设备都附加了 gmail 帐户,即使有,也不是每个人都使用它。如果他们使用诸如 hotmail、yahoo 或 POP3/IMAP 帐户之类的东西,则绝对无法知道或使用它。你想要的功能并没有内置在 android 中。

【讨论】:

    【解决方案4】:

    首先, Android 手机无法做到这一点。

    如果您确实需要通过 Android 手机静默发送电子邮件, 您可以实现一个网络服务,接受来自您的应用程序的输入并从您的服务器发送邮件。

    选项 2 是实施一个无需电子邮件即可接受反馈的 Web 服务。

    【讨论】:

      【解决方案5】:

      有几种方法可以在不使用邮件应用的情况下发送邮件:

      1) 使用 webservice 向服务器发送数据,服务器将电子邮件发送给特定的用户。

      email data->server->mail to Specific user
      

      2) 使用 java mail API 发送邮件。 Sending Email in Android using JavaMail API without using the default/built-in app

      【讨论】:

      • 这只是 Pedrams 的答案,结合我在问题中特别提到的 JavaMail...
      【解决方案6】:

      Android 有意图的概念。您将带有数据的 Intent 发送到系统,然后应用程序可以处理该 Intent 并由系统选择执行它可以对这些数据执行的操作。

      我相信 Intens 是与默认电子邮件客户端交互的唯一可靠方式。你不能改变其他应用程序的行为,所以你不能从概念上做到这一点。

      您必须在您的应用中实现电子邮件客户端,或者只处理默认应用的行为。

      【讨论】:

      • 意图只会打开电子邮件客户端并在许多情况下填充内容。用户仍然必须自己发送电子邮件,我的电子邮件被暴露了
      • 是的,我想说的是不可能的。您必须构建自己的电子邮件客户端。或者,您可能要考虑使用 REST 客户端。它的开销为 0,但您必须拥有服务器,这对于云解决方案来说非常容易。它认为这将满足您的所有需求。
      猜你喜欢
      • 2012-01-07
      • 2011-09-10
      • 1970-01-01
      • 2020-06-19
      • 2017-08-01
      • 2019-12-04
      • 1970-01-01
      • 2015-05-11
      • 2014-03-20
      相关资源
      最近更新 更多