我正在开发一个运行实验并从 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());
}
}