如何将电子邮件附件保存为电子邮件?

时间:2011-10-18 12:19:25

标签: php

在处理php中的电子邮件时,我很新。

基本上我需要读取pop3邮箱并将邮件保存到数据库和文件夹的附件中。然后将相同的邮件(略有改动)邮寄回另一个电子邮件收件人。

我以为我把这一切都搞定了,然后我意识到当附件是另一封邮件时我只收到身体作为文本(在base64_decode之后)。

是否可以将附加的电子邮件保存到文件中,然后将其作为附件发送到另一条消息中?

任何帮助将不胜感激。

以下是一些代码,以便将其放入透视图中:

// This is the IMAP connection: imap_open("{"."$host:$port/pop3$ssl"."}$folder",$user,$pass,OP_SILENT);
$mailConnection = $this->Maildata->mail_login($host,$port,$user,$pass,$folder,$ssl);

// This retrieves the list of mails in the current folder
$messageList = $this->Maildata->mail_list($mailConnection,$message);
foreach ($messageList as $messageId => $messageListData) {

    // This reads the mail object into an array
    $mailMessage = $this->Maildata->mail_mime_to_array($mailConnection,$messageId,true);

    // This loops through each mail
    foreach ($mailMessage as $tmpId => $tmpData) {
        // Excluded save to database since it is unrelated

        // This checks if item is an attachment and saves it.
        if (isset($tmpData['is_attachment']) && $tmpData['is_attachment'] === true) {
            $tmpName = date('Y-m-d H:i:s', strtotime('now'));
            $this->Maildata->mail_attachment_save($tmpData['data'], $tmpName .$tmpData['name']);
        }
    }
}

P.S。这一切都有效,但imap_fetchbody($mailConnection , $messageId, $prefix);似乎没有发送我需要的所有数据。

1 个答案:

答案 0 :(得分:0)

是。

您可以将附加的邮件另存为文件,但不会采用Microsoft Office Outlook可以理解的格式。有趣的是,如果您将文件另存为.eml,那么Windows Live邮件将完美地处理该邮件。

没有网络邮件服务处理附加邮件项目,因为Outlook和windlow实时邮件会这样做,而gmail会完全忽略它们。