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);