php发送带附件的电子邮件

我似乎无法找到这个我写的PHP函数的问题,应该发送带附件的电子邮件.我已经挣扎了很长一段时间.

function myMail($to, $subject, $mail_msg, $filename, $contentType){

    $random_hash = md5(date('r', time()));
    $headers = "From: webmaster@example.com\r\nReply-To: ".$to;
    $headers .= "\r\nContent-Type: ".$contentType.
        "; boundary=\"PHP-mixed-".$random_hash."\"";

    $attachment = chunk_split(base64_encode(file_get_contents($filename)));
    ob_start();

    echo "
--PHP-mixed-$random_hash
Content-Type: multipart/alternative; boundary=\"PHP-alt-$random_hash\"

--PHP-alt-$random_hash
Content-Type: text/plain; charset=\"utf-8\"
Content-transfer-encoding: 7bit

$mail_msg

--PHP-alt-$random_hash

--PHP-mixed-$random_hash--
Content-Type: text/plain; name=\"$filename\" 
Content-transfer-encoding: base64 
Content-disposition: attachment 

$attachment
--PHP-mixed-$random_hash--
";
    $message = ob_get_clean();
    $mail_sent = @mail( $to, $subject, $message, $headers );
    return $mail_sent ? "Mail sent" : "Mail Failed";
}

编辑问题是邮件的消息与文件混合并作为附件发送.

解决方法:

我刚刚查看了几封电子邮件,并注意到最终的附件边界以’ – ‘结尾,而开放边界标记则没有.在您的代码中,您有:

--PHP-mixed-$random_hash--
Content-Type: text/plain; name=\"$filename\" 
Content-transfer-encoding: base64 
Content-disposition: attachment 

$attachment
--PHP-mixed-$random_hash--

也许它应该是:

--PHP-mixed-$random_hash
Content-Type: text/plain; name=\"$filename\" 
Content-transfer-encoding: base64 
Content-disposition: attachment 

$attachment
--PHP-mixed-$random_hash--

看看这里的例子:

http://en.wikipedia.org/wiki/MIME#Multipart_messages

相关文章

统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
前言 之前做了微信登录,所以总结一下微信授权登录并获取用户...
FastAdmin是我第一个接触的后台管理系统框架。FastAdmin是一...
之前公司需要一个内部的通讯软件,就叫我做一个。通讯软件嘛...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...