在Android上发送带附件的电子邮件

时间:2013-07-26 19:11:57

标签: java android

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

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());
    }
}

1 个答案:

答案 0 :(得分:0)

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