【发布时间】:2015-11-02 02:32:36
【问题描述】:
我正在开发某种应用程序,我可以通过 cron 作业从我的收件箱中获取电子邮件,我只需将邮件发件人、邮件主题和邮件正文插入 MySQL 数据库。
我遇到的问题是不同的邮件类型,如 HTML 邮件、纯文本邮件……
有没有办法只获取文本?我已经尝试过使用 fetchbody 和 HTML 实体 printable_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 页面上完全显示它们,但这并不总是那么容易。
也许我解决这个问题的方式完全错误,但也许你们有一些提示、想法或什么?
提前致谢, 伯特
【问题讨论】:
标签: php mysql email file-get-contents email-headers