Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.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
Php 发送带有附件问题的邮件_Php_Email - Fatal编程技术网

Php 发送带有附件问题的邮件

Php 发送带有附件问题的邮件,php,email,Php,Email,我在发送带有附件的邮件时遇到问题。我有这个功能: function mail_att($to, $subject, $message, $anhang) { $absender = "Sender"; $absender_mail = "noreply@example.org"; $reply = "noreply@example.org"; $path = $anhang; $uploadna

我在发送带有附件的邮件时遇到问题。我有这个功能:

function mail_att($to, $subject, $message, $anhang) { 
    $absender = "Sender"; 
    $absender_mail = "noreply@example.org"; 
    $reply = "noreply@example.org"; 

    $path = $anhang;
$uploadname = "Anhang.pdf";

$trenner = md5( time() );
    // Mail Header 
    $mailheader = "Reply-To: " .$absender. "<" .$absender_mail. ">\r\n";
    $mailheader .= "Return-Path: ".$absender_mail."\r\n";
    $mailheader .= "Message-ID: <".$absender_mail.">\r\n";
    $mailheader .= "X-Mailer: PHP v" .phpversion(). "\r\n";
    $mailheader .= "From: ".$absender."<".$absender_mail.">\r\n";
    $mailheader .= "MIME-Version: 1.0\r\n";
    $mailheader .= "Content-Type: multipart/mixed;\r\n";
    $mailheader .= " boundary = " .$trenner;
    $mailheader .= "\r\n\r\n";
 
    // Mailbody 
    $mailbody  = "This is a multi-part message in MIME format\r\n";
    $mailbody .= "--" .$trenner. "\r\n";
    $mailbody .= "Content-Type: text/html; charset=UTF-8\r\n";
    $mailbody .= "Content-Transfer-Encoding: 8bit\r\n\r\n";
    $mailbody .= $message. "\r\n\r\n";
 
    // Attachment 
    $mailbody .= "--" .$trenner. "\r\n";
    $mailbody .= "Content-Type: application/pdf; name=\"" .$uploadname. "\"\r\n";
    $mailbody .= "Content-Transfer-Encoding: base64\r\n";
    $mailbody .= "Content-Disposition: attachment; filename=\"" .$uploadname. "\"\r\n\r\n";
    $mailbody .= chunk_split( base64_encode( file_get_contents( $path ) ) );
    $mailbody .= "\n";
 
    // Send
    mail( $to, htmlspecialchars( $subject ), $mailbody, $mailheader );
} 
function mail_att($to,$subject,$message,$anhang){
$absender=“发件人”;
$absender_邮件=”noreply@example.org"; 
$reply=”noreply@example.org"; 
$path=$anhang;
$uploadname=“Anhang.pdf”;
$trenner=md5(time());
//邮件头
$mailheader=“回复:“..$absender.”\r\n”;
$mailheader.=“返回路径:”.$absender\U mail.\r\n”;
$mailheader.=“邮件ID:\r\n”;
$mailheader.=“X-Mailer:PHP v”.phpversion()。”\r\n;
$mailheader.=“发件人:”.$absender.\r\n”;
$mailheader.=“MIME版本:1.0\r\n”;
$mailheader.=“内容类型:多部分/混合;\r\n”;
$mailheader.=“boundary=”.$trenner;
$mailheader.=“\r\n\r\n”;
//邮件正文
$mailbody=“这是MIME格式的多部分邮件\r\n”;
$mailbody.=“-”$trenner.\r\n”;
$mailbody.=“内容类型:text/html;charset=UTF-8\r\n”;
$mailbody.=“内容传输编码:8位\r\n\r\n”;
$mailbody.=$message.“\r\n\r\n”;
//附件:
$mailbody.=“-”$trenner.\r\n”;
$mailbody.=“内容类型:application/pdf;名称=\”.$uploadname.\“\r\n”;
$mailbody.=“内容传输编码:base64\r\n”;
$mailbody.=“内容处置:附件;文件名=\”.$uploadname.\“\r\n\r\n”;
$mailbody.=区块分割(base64编码(文件获取内容($path));
$mailbody.=“\n”;
//发送
邮件($to,htmlspecialchars($subject),$mailbody,$mailheader);
} 
但是当我想发送邮件时,我什么也得不到。问题出在哪里?我确信我输入了正确的收件人电子邮件!邮件服务器也没有问题,因为普通的电子邮件工作正常


解决了的
哦,我从来没想过要用phpmailer。这使一切变得更简单,而且有效。我所有的工作都是徒劳的。

您的电子邮件使用PHP内置的
mail()
函数发送消息

因此,PHP将尝试通过运行PHP的同一服务器上运行的本地MTA发送消息,如
PHP.ini
文件中的
sendmail\u路径所指定。您首先要查看的地方是本地MTA的日志。
这些应该告诉你

  • 本地MTA是否收到来自PHP脚本的消息,如果收到
  • 本地MTA尝试将邮件传递到远程MTA时发生的情况

  • 简单回答:不要构建自己的mime电子邮件,尤其是带有附件的电子邮件。使用PHPMailer或Swiftmailer,两者都可以将整个代码段减少到大约4或5行。同样,您只是假设
    mail()
    正在工作。你检查过它的返回值了吗?失败时返回false。您是否检查了发送服务器的邮件日志?也许这封邮件被当作垃圾邮件扔掉了。你是在发送到gmail帐户吗?谷歌因过滤从他们认为“自动”来源发送的带有附件的电子邮件而臭名昭著。你什么也得不到吗?我看到您正试图发送到>>
    $to
    @Fred我认为$to是函数的一个参数,因此它将与所有其他参数一起传递。@Sébastien好的,我想我现在知道您的意思了,谢谢。