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



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

<?php
$EmailTo = "Me@here.com";
$EmailFrom = "You@There.com";
$EmailSubject = "The Email Subject";
$MailBoundary = md5(uniqid(time()));
$Headers = "To: ". $EmailTo . "rn";
$Headers .= "From: ". $EmailFrom . "rn";
$Headers = "MIME-Version: 1.0rn";
$Headers .= "Content-type: multipart/mixed;boundary="$MailBoundary "";
$Headers .= "rnrn";
$Headers .= "This is a multi-part message in MIME format.";
$Headers .= "rnrn";
$FileAttachment = "AttachedFile.pdf";
$File = fopen($FileAttachment, "r");
$FileData = fread($File, filesize($FileAttachment));
$FileData = chunk_split(base64_encode($FileData));
$FileName = basename($FileAttachment);
$EmailBody = "--$MailBoundaryrn";
$EmailBody .= "Content-type: text/html; charset=iso-8859-1rn";
$EmailBody .= "Content-transfer-encoding: 8bitrnrn";
$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 .= "--$MailBoundaryrn";

$EmailBody .= "Content-type: " . mime_content_type($File) . "; name=$FileNamern";
$EmailBody .= "Content-transfer-encoding:base64rnrn";
$EmailBody .= $FileData. "rnrn";
$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);
}
?>
For sending mail with attachment using php mail().Try this code:
<?php
 //If there is no error, send the email
 if(isset($_POST['ur_submit_button_name'])) {
  $EmailTo = "Me@here.com";
  $EmailFrom = "You@There.com";
  $EmailSubject = "The Email Subject";

  $separator = md5(time());
  // carriage return type (we use a PHP end of line constant)
  $eol = PHP_EOL;
  // attachment name
  $filename = "ip.zip";//store that zip file in ur root directory
  $attachment = chunk_split(base64_encode(file_get_contents('ip.zip')));
  // main header
  $headers  = "From: ".$from.$eol;
  $headers .= "MIME-Version: 1.0".$eol; 
  $headers .= "Content-Type: multipart/mixed; boundary="".$separator.""";
  // no more headers after this, we start the body! //
  $body = "--".$separator.$eol;
  $body .= "Content-Transfer-Encoding: 7bit".$eol.$eol;
  $body .= "This is a MIME encoded message.".$eol;
  // message
  $body .= "--".$separator.$eol;
  $body .= "Content-Type: text/html; charset="iso-8859-1"".$eol;
  $body .= "Content-Transfer-Encoding: 8bit".$eol.$eol;
  $body .= $message.$eol;
  // attachment
  $body .= "--".$separator.$eol;
  $body .= "Content-Type: application/octet-stream; name="".$filename.""".$eol; 
  $body .= "Content-Transfer-Encoding: base64".$eol;
  $body .= "Content-Disposition: attachment".$eol.$eol;
  $body .= $attachment.$eol;
  $body .= "--".$separator."--";
  // send message
  if (mail($to, $subject, $body, $headers)) {
  $mail_sent=true;
  echo "mail sent";
  } else {
  $mail_sent=false;
  echo "Error,Mail not sent";
 }
}
?>

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

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

相关内容

  • 没有找到相关文章

最新更新