Email PHP发送带有文件附件的电子邮件-根本不发送电子邮件

Email PHP发送带有文件附件的电子邮件-根本不发送电子邮件,email,attachment,email-attachments,php,Email,Attachment,Email Attachments,Php,在阅读了关于用PHP发送带有附件的电子邮件的各种文章(我习惯于使用VBScript进行ASP)之后,我编写了以下代码。不幸的是,它根本不起作用。它不仅没有发送带有附件的电子邮件,而且电子邮件似乎根本没有发送,即使我的脚本说它确实发送了。我哪里出错了?我没有使用表单上传文件。这是一个静态脚本 <?php $EmailTo = "Me@here.com"; $EmailFrom = "You@There.com"; $EmailSubject = "The Email Subject";

在阅读了关于用PHP发送带有附件的电子邮件的各种文章(我习惯于使用VBScript进行ASP)之后,我编写了以下代码。不幸的是,它根本不起作用。它不仅没有发送带有附件的电子邮件,而且电子邮件似乎根本没有发送,即使我的脚本说它确实发送了。我哪里出错了?我没有使用表单上传文件。这是一个静态脚本

<?php

$EmailTo = "Me@here.com";
$EmailFrom = "You@There.com";
$EmailSubject = "The Email Subject";

$MailBoundary = md5(uniqid(time()));

$Headers = "To: ". $EmailTo . "\r\n";
$Headers .= "From: ". $EmailFrom . "\r\n";
$Headers = "MIME-Version: 1.0\r\n";
$Headers .= "Content-type: multipart/mixed;boundary=\"$MailBoundary \"";
$Headers .= "\r\n\r\n";
$Headers .= "This is a multi-part message in MIME format.";
$Headers .= "\r\n\r\n";

$FileAttachment = "AttachedFile.pdf";
$File = fopen($FileAttachment, "r");
$FileData = fread($File, filesize($FileAttachment));
$FileData = chunk_split(base64_encode($FileData));
$FileName = basename($FileAttachment);

$EmailBody = "--$MailBoundary\r\n";
$EmailBody .= "Content-type: text/html; charset=iso-8859-1\r\n";
$EmailBody .= "Content-transfer-encoding: 8bit\r\n\r\n";

$EmailBody .= "<html>" . chr(13) .
              "<head>" . chr(13) .
              "<style>" . chr(13) .
              ".breg {font-family:arial;font-size:10pt;color:#000000;padding:5px;}" . chr(13) .
              "</style>" . chr(13) .
              "</head>" . chr(13) .
              "<body>" . chr(13) .
              "<div class=" . chr(34) . "breg" . chr(34) . ">" . chr(13) .
              "The message text body goes here" . chr(13) .
              "</div>" . chr(13) .
              "</body>" . chr(13) .
              "</html>";

$EmailBody .= "--$MailBoundary\r\n";


$EmailBody .= "Content-type: " . mime_content_type($File) . "; name=$FileName\r\n";
$EmailBody .= "Content-transfer-encoding:base64\r\n\r\n";
$EmailBody .= $FileData. "\r\n\r\n";

$EmailBody .= " --$MailBoundary--";

if (mail($EmailTo, $EmailSubject, $EmailBody, $Headers))
{
 echo "Email to " . $EmailTo . " has been sent" . chr(13) . "<br />" . chr(13);
}
else
{
 echo "<b>Email to " . $EmailTo . " was not sent</b>" . chr(13) . "<br />" . chr(13);
}

?>

用于使用php mail()发送带有附件的邮件。请尝试以下代码:

我认为您的电子邮件内容有错误, 使用imap_mail_compose功能生成您的电子邮件内容:

mail('', 'message subject', '', imap_mail_compose(array header, array body)); 

你有没有试过去掉所有多余的东西,只发送一封最少的电子邮件,以确保邮件通话正常工作?如果可以的话,你可以慢慢地重新添加功能,直到找到停止它工作的部分。我会停止使用php mail()的尝试,因为它动力不足,请查看phpmailer或其他Cals。也许你应该改用phpmailer类!?谷歌这一个是的,我可以只发送一个基本的电子邮件。所以我知道mail()正在工作我不知道我正在使用的服务器上是否有PHPMailer。mail不发送我们必须做的事情。?太好了!只有在我注意到您在字符集周围的双引号后,它才对我起作用:
“内容类型:text/plain;字符集=\“iso-8859-1\”。$eol
mail('', 'message subject', '', imap_mail_compose(array header, array body));