问题描述
我想从多部分mime邮件的附件中创建文件。我可以检索所需的信息,而且创建本身也不是问题。我遇到的困难是,对于给定的标题和正文,我不确定应该使用哪种编码来创建文件。
假设我们必须附加附件:
//HEADER
Content-Type: application/pdf;
name="somepdf.pdf"
Content-transfer-encoding: base64
Content-disposition: attachment;
filename="somepdf.pdf"
//BODY
%PDF-1.4
7 0 obj <</Length1 1501 /Length2 7274 /Length3 0 /Length 8281 /Filter /FlateDecode>>
..
..
//HEADER
Content-Type: text/x-tex; charset=UTF-8;
name="sometex.tex"
Content-transfer-encoding: 7bit
Content-disposition: attachment;
filename="sometex.tex"
//BODY
\documentclass[a4paper,12pt]{article}
\usepackage[german,english]{babel}
\usepackage{fullpage,graphicx}
..
..
如果要创建一个包含此信息的文件,应如何选择文件的编码?如果我只是拿pdf的正文,例如并直接使用它来编写pdf文件,由于编码错误,导致pdf格式不可读。对应文件的正确编码是什么?如果您还有其他提示,我将使用Kotlin在android上进行此操作
解决方法
解析电子邮件非常困难。有多种不同的编码方法,字符集,并且在电子邮件中经常看到边缘情况和多部分内容的嵌套。
- 有一个Kotlin库可以https://github.com/chroder/kotlin-email-parser
- 您可以调用http://commons.apache.org/proper/commons-email/之类的Java库来进行解析;或
- 您可以依靠第三方服务来解析电子邮件内容并提取附件,例如https://www.cloudmailin.com
尝试仅提取正文部分不会涵盖编码方法,并且每种方法都会有所不同,并且需要了解电子邮件的RFC标准(例如RFC 5322、2822、822)。