0

我正在开发一个运行实验并从 Android 设备获取一些统计数据的 Android 应用程序。获得结果后,应用程序尝试通过电子邮件发送它们(使用 Intent.ACTION_SEND)。但是,我一直对原始消息的大小有疑问,因此在使用 GZip 发送之前对消息进行了压缩。我不想像使用 putExtra(Intent.EXTRA_STREAM, ...) 那样创建要附加到消息的文件。如果我可以修改消息头,那将非常简单,但似乎没有办法做到这一点。我还尝试将标题信息放在消息之前,但 GMail 客户端无法识别该附件 - Android 将整个消息嵌入到另一个具有文本/纯文本类型的附件中。

private void sendResults(String title) {
    String body;

    try {

        body  = "Content-type: multipart/mixed; boundary=\"anexo\"\n\n";

        body += "--anexo\n";
        body += "Content-type: application/gzip; name=\"results.gz\" \n";
        body += "Content-disposition: attachment; filename=\"results.gz\" \n";
        body += "Content-Transfer-Encoding: base64 \n";
        body += Base64.encodeToString(ZipUtil.compress(results).getBytes(), Base64.DEFAULT) + "\n";

        body += "--anexo\n";
        body += "Content-type: text/plain; charset=us-ascii \n";
        body += "Results.\n";
        body += "--anexo--\n\n";

        Intent sendIntent = new Intent(Intent.ACTION_SEND);
        sendIntent.putExtra(Intent.EXTRA_TEXT, body);
        String[] to = { "example_of_email@gmail.com" };
        sendIntent.putExtra(Intent.EXTRA_EMAIL, to);
        sendIntent.putExtra(Intent.EXTRA_SUBJECT, "[dsp-benchmarking] "+title);
        sendIntent.setType("message/rfc822");
        startActivity(Intent.createChooser(sendIntent, "Send results"));

    } catch (IOException e) {
        Log.e("SEND_RESULTS", "Error: " + e.getMessage());
    }
}
4

1 回答 1

0

您是否可以为此目的使用电子邮件调度程序应用程序?如果是这样,也许您可​​以使用Email-Bot并将其配置为以可配置的时间间隔将带有附件的电子邮件发送到特定帐户。如果需要,您还可以设置在邮件发送后删除附件。

于 2013-07-26T20:47:59.340 回答