Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/244.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
PHPMailer AddAttachment不工作_Php_Phpmailer - Fatal编程技术网

PHPMailer AddAttachment不工作

PHPMailer AddAttachment不工作,php,phpmailer,Php,Phpmailer,所以我有以下几点。。。邮件发送时没有附件,我似乎找不到原因。我们将非常感谢您的帮助:) 这是我为自己写的,在任何形式的依恋下都能完美地工作 发布参数: 1. from -- from email id 2. subject -- subject of email 3. message -- message content of email 4. secret -- UPqHPVAA7RV3eGZ1CySqAj1OM1eiurgbh8e7rgbergre87ge9r

所以我有以下几点。。。邮件发送时没有附件,我似乎找不到原因。我们将非常感谢您的帮助:)


这是我为自己写的,在任何形式的依恋下都能完美地工作

发布参数:

1. from       -- from email id
2. subject    -- subject of email
3. message    -- message content of email
4. secret     -- UPqHPVAA7RV3eGZ1CySqAj1OM1eiurgbh8e7rgbergre87ge9rb
5. filename   -- name of file
6. path       -- path of the file
如果需要,可以使用普通PHP变量替换post参数,或者只需通过post调用发布这些参数


下面是我的邮件文件的代码

$result = array();
if(isset($_POST['from']) && isset($_POST['subject']) && isset($_POST['message']) && isset($_POST['secret']) && isset($_POST['filename']) && isset($_POST['path']))
{
    if(isset($_POST['to'])){
            $to = $_POST['to'];
    }else{
            $to = "my_email@live.com"; 
}
$path=$_POST['path'];
$filename=$_POST['filename'];
$file = $path.$filename;

$content = file_get_contents($file);

$content = chunk_split(base64_encode($content));
$uid = md5(uniqid(time()));
$name = basename($file);

$subject = $_POST['subject'];
$message = $_POST['message'];
$secret = "UPqHPVAA7RV3eGZ1CySqAj1OM1eiurgbh8e7rgbergre87ge9rb"; //This is required to use this script. It ensures that only we can use this script.
$from = $_POST['from'];
$headers = "From:" . $from."\r\n";
$headers.="MIME-Version: 1.0\r\n";    
$headers.= "Content-Type: multipart/mixed; boundary=\"".$uid."\"\r\n\r\n";
$headers.= "This is a multi-part message in MIME format.\r\n";
$headers.= "--".$uid."\r\n";
$headers.= "Content-type:text/html; charset=ISO-8859-1\r\n";
$headers.= "Content-Transfer-Encoding: 7bit\r\n\r\n";
$headers.= $message."\r\n\r\n";
$headers.= "--".$uid."\r\n";
$headers.= "Content-Type: application/octet-stream; name=\"".$filename."\"\r\n"; // use different content types here
$headers.= "Content-Transfer-Encoding: base64\r\n";
$headers.= "Content-Disposition: attachment; filename=\"".$filename."\"\r\n\r\n";
$headers.= $content."\r\n\r\n";
$headers.= "--".$uid."--";


if(strlen($_POST['secret'])!=100)
{
    $result['sent'] = FALSE;
    $result['error'] = "whatsmyname";//Malicious Script Use Attempt Thwarted.
    echo json_encode($result);
    exit();
}
if($secret == $_POST['secret'])
{
    if(mail($to,$subject,$message,$headers))
    {
        $result['sent'] = TRUE;
        echo json_encode($result);
        exit();
    }
    else
    {
        $result['sent'] = FALSE;
        $result['error'] = "mailserver";//Mail Server Down.
        echo json_encode($result);
        exit();
    }
}
else
{
    $result['sent'] = FALSE;
    $result['error'] = "whatsmyname";//Malicious Script Use Attempt Thwarted.
    echo json_encode($result);
    exit();
}
}

您可以创建HTML格式的消息内容。这意味着您可以将图像添加到消息内容、对内容进行颜色编码以及使用html可以执行的所有其他操作。 以下是消息正文的示例:

$message='<html>                            
          <body>
            <font size="3">Name : '. $name.' </font><br /><br />
            <font size="3">Email : '. $email.' </font><br /><br />
            <font size="3">Contact Number : '.$phonenumber.' </font><br /><br />
            <font size="3">Registration Date: '.$signupdate.' </font><br /><br />       
            <br />
            Thanks, <br />
        </body>
        </html>';
$message='1!'
名称:'$名称。“

电邮:‘$电子邮件。'

联系电话:'.$phonenumber'

注册日期:'.$signupdate'


谢谢,
';


干杯

我要做的第一件事是检查
addAttachment()
的返回值。根据:

“如果找不到或无法读取文件,则返回false。”

假设文件实际存在于引用的位置,请检查并确保您(或执行此代码的任何进程)具有读取权限。如上所述,使用完整路径(可能)是一个好主意

此外,这应该无关紧要,但调用与声明中出现的大小写相同的函数通常是一种良好的做法。在两种情况下,类声明与您编写它的方式不同(从小写开始):


试试看附件的完整路径不,先生,它不起作用,我自己说得再好不过了!为同一事物生成的文档如下所示。案例匹配的事情表明OP基于一个旧的例子——前一段时间为了更好地遵守PSR-2而改变了各种功能的例子——并且可能也在使用一个旧版本的PHPMailer。这是一个经典的例子,说明了为什么你不应该滚动你自己的电子邮件代码。它容易受到标头注入攻击,无法处理UTF-8数据,缺少主题标头,无法正确编码标头,伪造发件人地址(因此无法通过SPF检查),并充当垃圾邮件网关等。使用图书馆。如果你知道这么多,那么我通过你会很聪明地接受它。这里的要点是使用一个有效的mailer脚本,而不是指出您可能存在哪些漏洞。此外,如果你仔细阅读,我已经提到了主题标题。为什么你认为建议任何人使用不安全代码是个好主意?编写没有这些问题的代码是困难的;库的存在使您不必这样做。OP已经足够聪明,能够解决这个问题。@RiteshKumar-恕我直言,
标记已被弃用,在HTML 5中不受支持,在我看来,2015年不应该使用它。
$message='<html>                            
          <body>
            <font size="3">Name : '. $name.' </font><br /><br />
            <font size="3">Email : '. $email.' </font><br /><br />
            <font size="3">Contact Number : '.$phonenumber.' </font><br /><br />
            <font size="3">Registration Date: '.$signupdate.' </font><br /><br />       
            <br />
            Thanks, <br />
        </body>
        </html>';
$mail->addAttachment('/full/path/to/attach/tnc.pdf', 'TnC.pdf');
$mail->addAddress($to);