PHP-带附件的邮件-未显示邮件

PHP-带附件的邮件-未显示邮件,php,email,attachment,Php,Email,Attachment,我正在尝试完成发送带有附件的邮件 问题:发送电子邮件时没有邮件正文和附件 目标:发送带有附件的utf-8html电子邮件 到目前为止我创造了 用法: email_library.php <?php private function create_body() { $this->body[] = "--{$this->uid}"; $this->body[] = "Content-type: text/html; chars

我正在尝试完成发送带有附件的邮件

问题:发送电子邮件时没有邮件正文和附件

目标:发送带有附件的
utf-8
html
电子邮件

到目前为止我创造了

用法:

email_library.php

<?php

    private function create_body()
    {
        $this->body[] = "--{$this->uid}";
        $this->body[] = "Content-type: text/html; charset=utf-8";
        $this->body[] = "Content-Transfer-Encoding: 7bit";
        $this->body[] = $this->message;

        if (!empty($this->attachments)) {

            foreach ($this->attachments as $k => $a) {
                $this->body[] = "--{$this->uid}";
                $this->body[] = "Content-Type: application/octet-stream; name=\"{$a['name']}\"";
                $this->body[] = "Content-Description: {$a['name']}";
                $this->body[] = "Content-Transfer-Encoding: base64";
                $this->body[] = "Content-Disposition: attachment; filename=\"{$a['name']}\"";
                $this->body[] = "{$a['data']}";
            }

        }
        $this->body[] = "--{$this->uid}--";

    }
删除
“--”


最后一个主体部分后面的封装边界是一个可分辨的分隔符,它指示后面不再有其他主体部分

处理多部分邮件时,需要在
-->==MIME\u边界之前用两个换行符分隔每个部分(邮件正文+附件)
!否则,它们在您的邮件中不会正确分开

只需将
\n
添加到现有代码:

$this->body[] = $this->message."\n\n";
...
$this->body[] = "{$a['data']}\n\n";
免责声明:我没有测试过任何一个,希望它能工作


有关更多信息,请查看

注意-不再允许使用多个换行符,对我来说,DOOManiac答案不再有效。

乍一看,我觉得你的脚本还不错。。。您是否尝试过发送没有附件的电子邮件?
$this->body[] = $this->message."\n\n";
...
$this->body[] = "{$a['data']}\n\n";