功能发送带有附件错误的电子邮件

Posted

技术标签:

【中文标题】功能发送带有附件错误的电子邮件【英文标题】:function send email with attachment error 【发布时间】:2013-04-14 05:35:08 【问题描述】:

我正在尝试通过 php 发送带有附件文件的邮件来创建,但是有一个错误,当邮件发送到邮箱时,邮件到达时没有任何附件,这里是邮箱的屏幕截图

<?php
function mail_file($to, $from, $subject, $body, $file)

    $boundary = md5(rand());

    $headers = array(
        'MIME-Version: 1.0',
        "From: $from",
        "Content Type : multipart/mixed; boundary=\"$boundary\""

                    );

$message = array(
"--$boundary",
'Content-Type: text/html; charset="utf-8"',
'Content-transfer-Encoding: 7-bit',
'',
chunk_split($body),
"--$boundary",
"Content-Type: file['type']; name=\"$file['name']\"",
"Content-Disposition: attachment; filename=\"$file['name']\"",
"Content-Transfer-Encoding: base64",
'',
@chunk_split(base64_encode(file_get_contents($file['path']))),
"--$boundary--"
);

@mail($to, $subject, implode("\r\n", $message), implode("\r\n", $headers));     

        

        if($_SERVER['REQUEST_METHOD'] =='POST')
    $file = array (

    'name' => $_FILES['file']['name'],
    'size' => $_FILES['file']['size'],
    'type' => $_FILES['file']['type'],
    'path' => $_FILES['file']['tmp_name']
    );



    mail_file('fahmy.farahat@gmail.com', 'File from <fahmy.farahat@gmail.com>', 'a file up', $body, $file);
    

?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>send mail</title>
</head>

<body>


<form action="" method="post" enctype="multipart/form-data">
<label>Name</label><br />

<input type="text" name="name" id="name" />
<br /><br />


<input type="file" name="file" id="file"/>
<br />

<input type="submit" value="email file" />

</form>
</body>
</html>

【问题讨论】:

我不确定,可能是什么问题,但为什么不使用任何邮件库来发送带有附件的电子邮件呢?它将需要更少的代码,并提供附加文件的能力,并且您将不会遇到此类问题。一个流行的库是 Swift swiftmailer.org 好吧,你说“有一个错误”... 错误是什么?日志文件说什么? 同样在这种情况下,您应该始终首先将有效负载的最终组件转储到文件中,并检查它们是否真的包含您期望的内容。将该信息添加到上述问题中。 顺便说一句,当正文部分没有内容时,为什么要创建多部分? 【参考方案1】:

邮件标题应为Content-Type,而不是Content Type

【讨论】:

这是否意味着您只能在邮件客户端中查看文件大小?或者您甚至无法保存电子邮件中的文件? 文件以 0k 大小到达邮件 抱歉,这个答案真的很模棱两可。

以上是关于功能发送带有附件错误的电子邮件的主要内容,如果未能解决你的问题,请参考以下文章

使用 javamail API 发送带有附件的电子邮件

无法在python中使用MIME发送带有pdf附件的电子邮件

Magento:如何在magento中发送带有附件的联系表电子邮件?

基于PHP自带的mail函数实现发送邮件以及带有附件的邮件功能

使用python发送带有(docx)附件的邮件

带有附件问题的 PHP Pear Mime 邮件