Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/298.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何将电子邮件附件保存为电子邮件?_Php - Fatal编程技术网

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

Php 如何将电子邮件附件保存为电子邮件?,php,Php,我对用php处理电子邮件很陌生 基本上,我需要读取pop3邮箱并将邮件保存到数据库中,将附件保存到文件夹中。然后将同样的邮件(稍加修改)寄回给另一个电子邮件收件人 我以为这一切都正常工作了,然后我意识到当附件是另一封邮件时,我只接收文本形式的正文(base64_解码后) 是否可以将附加的电子邮件保存到文件中,然后在另一封邮件中作为附件发送 任何帮助都将不胜感激 下面是一些代码,可以将其放到透视图中: // This is the IMAP connection: imap_open("{"."$

我对用php处理电子邮件很陌生

基本上,我需要读取pop3邮箱并将邮件保存到数据库中,将附件保存到文件夹中。然后将同样的邮件(稍加修改)寄回给另一个电子邮件收件人

我以为这一切都正常工作了,然后我意识到当附件是另一封邮件时,我只接收文本形式的正文(base64_解码后)

是否可以将附加的电子邮件保存到文件中,然后在另一封邮件中作为附件发送

任何帮助都将不胜感激

下面是一些代码,可以将其放到透视图中:

// 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']);
        }
    }
}
顺便说一句,这一切都有效,但是
imap\u fetchbody($mailConnection,$messageId,$prefix)似乎没有发送我需要的所有数据。

您可以将附加的邮件另存为文件,但其格式不能被Microsoft Office Outlook理解。有趣的是,如果您将文件另存为.eml,那么windows live mail将完美地处理该邮件


没有任何网络邮件服务像outlook和windlows live mail那样处理附加邮件,gmail会完全忽略这些邮件。

请向我们展示您的代码。说它是“另一条消息”是不正确的,您使用的是什么MIME解析器?这可能会有所帮助:即使它说“IMAP”,我相信它也可以与POP一起工作。@DaveRandom我使用IMAP连接到邮箱。我将添加一些代码,但我不相信它会有帮助。@Nightwolf您使用哪个库/函数来完成此操作?@DaveRandom我使用的代码是唯一的注释。但是代码中有一些我需要纠正的简单缺陷。