使用PHP从IOS设备发送格式化电子邮件中获取内联电子邮件附件

时间:2012-10-04 08:16:24

标签: php ios email imap attachment

我正在使用PHP-imap来阅读电子邮件以及来自IMAP帐户的附件。电子邮件是从iPhone或iPad发送的。当他们写一封电子邮件并粘贴他们拍摄的图像时,它可以正常工作。

以下是我获取附件的摘录:

require_once("plugins/MailLib/MailLib.php");

$mailbox = new MailLib();
$mailbox->connect($username, $password, $server, $port, $path, false);

$mails = array();
$mailIds = $mailbox->getMails("UNSEEN");

if($mailIds != null && count($mailIds) > 0) {
    foreach($mailIds as $mailId) {
        $mail = $mailbox->getMail($mailId);
        if($mail['attachments']) {
            foreach($mail['attachments'] as $attachment) {
                $file = $mailbox->getAttachment($attachment, $mailId);
                $destFile = "path/to/folder/".time().".jpg";
                $fh = fopen($destFile, 'a') or die("can't open file");
                fwrite($fh, $file);
                fclose($fh);
            }
        }
 }

一旦他们开始使用粗体,斜体或下划线等默认选项格式化内容,一切都会崩溃。因为那时我得到以下电子邮件内容:

<div>
    <em>Test</em> with <strong>formatting</strong>
    <br>
    <br>
    <img id="7CB777EB-3124-4AEA-8894-6F743EA78F79" src="cid:7CB777EB-3124-4AEA-8894-6F743EA78F79" alt="image.jpeg">
    <br>
    <br>
    <div>Send from my iPhone</div>
</div>

是否有任何类型的php库可以获取这些附件?

1 个答案:

答案 0 :(得分:0)

我找到了解决问题的方法。有人写了small class to extract inline attachments

使用此类可以将附件内容直接写入文件,如下所示:

foreach($emailMessage->attachments as $attachment) {
    file_put_contents(time().".extension", $attachment['data']);
}