我正在处理某种类型的应用程序,我可以通过cron作业从我的收件箱中收到电子邮件,我只需将邮件,邮件主题和邮件正文插入MySQL数据库。
我遇到的问题是HTML邮件,纯文本邮件等不同的邮件类型。
有没有办法获得文字?我尝试过使用fetchbody和HTML权限,printtable_decode,但有时会导致空体插入或带有所有特殊字符的插件或有时完美。
//$body = mysqli_real_escape_string($db, htmlentities(quoted_printable_decode(imap_fetchbody($stream,$email_id, 1.2)), ENT_QUOTES));
$body = mysqli_real_escape_string($db, quoted_printable_decode(imap_fetchbody($stream,$email_id, 1.2)));
//$body = quoted_printable_decode(imap_fetchbody($stream,$email_id,2));
$bodyText = imap_fetchbody($stream,$email_id,1.2);
if(!strlen($bodyText)>0){
$bodyText = "<html><body>".imap_fetchbody($stream,$email_id,1)."</body></html>";
}
然后我尝试使用完整的html主体,但这会导致插入我的数据库时遇到问题,如果我转义字符串,HTML会变得混乱。我通过获取完整的HTML正文并将其写入.html文件来临时修复它,但这不是一个选项。
我将它们存储到MySQL数据库中的原因是我可以将用户,颜色等分配给不同的邮件(这不是Outlook中的iMAP邮件选项。)
我的最终想法是保存电子邮件,就像它在Outlook中显示的那样,然后在.php页面上显示它们,但它并不总是那么容易。
也许我完全以错误的方式处理这个问题,但也许你们有一些提示,想法或什么?
提前致谢, 伯特
答案 0 :(得分:1)
如果正确发送电子邮件,应该是纯文本和HTML,但这是一个理想的世界。
所以我建议你。
向用户显示时
您还可以使用eml解析器并在DB中保存eml文件。
检查:
答案 1 :(得分:0)
如果您不愿意的话,想在这里添加一个可能的替代选项!
您可以使用Parserr提取电子邮件的正文,然后使用Microsoft Flow或Zapier将数据推送到您的MySql数据库中?然后,它还为您提供了根据需要提取电子邮件详细信息的选项(例如主题,抄送等)。
Parserr可以以已经转义的格式传递它,这样您在它到达数据库时就不必担心它的格式。此外,它已经可以选择添加纯文本(自动为您提取)以及使用HTML markdown的剥离格式版本。