PHP电子邮件内容作为附件到达
我有这段PHP代码,虽然它可以工作,但问题是电子邮件内容作为附件与预期附件一起发送,这意味着当电子邮件到达时,正文是空白的,但有两个附件。一个是预期的附件,另一个是应该显示在电子邮件中的电子邮件内容。我做错什么了吗 以下是完整的源代码:PHP电子邮件内容作为附件到达,php,Php,我有这段PHP代码,虽然它可以工作,但问题是电子邮件内容作为附件与预期附件一起发送,这意味着当电子邮件到达时,正文是空白的,但有两个附件。一个是预期的附件,另一个是应该显示在电子邮件中的电子邮件内容。我做错什么了吗 以下是完整的源代码: <?php require('fpdf/fpdf.php'); include('./config.php'); $pdf = new FPDF('P', 'pt', 'Letter'); $pdf->SetAutoPageBreak(true,
<?php
require('fpdf/fpdf.php');
include('./config.php');
$pdf = new FPDF('P', 'pt', 'Letter');
$pdf->SetAutoPageBreak(true, $margin);
$pdf->AddPage();
$pdf->SetFont('arial','',12);
if(isset($_POST['accept'])){
$id = $_POST['id'];
$to = 'me@somewhere.com';
$subject = urldecode($_POST['subject']);
$message = urldecode($_POST['message']);
$data = '';
$result = mysql_query("select * from applications where id = $id");
$row = $data_array = mysql_fetch_assoc($result);
$data .= "Name: " . $row['name'] . " \n\n";
$data .= "Surname: " . $row['surname'] . "\n\n";
$data .= "Age: ". $row['age'] . "\n\n";
$data .= "Dob: ". $row['dob'] . "\n\n";
$data .= "Height: ". $row['height'] . "\n\n";
$data .= "Add1 : ".$row['address1'] . "\n\n";
$data .= "Add2: ".$row['address2'] . "\n\n";
$data .= "Add3: ".$row['address3'] . "\n\n";
$data .= "Postcode: ".$row['postcode'] . "\n\n";
$data .= "Town: ".$row['town'] . "\n\n";
$data .= "County: ". $row['county']. "\n\n";
$pdf->SetX(140);
$pdf->Ln(2);
$pdf->MultiCell(0, 15, $data);
$from = "me@mydomain.com";
$separator = md5(time());
$eol = PHP_EOL;
// attachment name
$filename = "form.pdf";
// encode data (puts attachment in proper format)
$pdfdoc = $pdf->Output("", "S");
$attachment = chunk_split(base64_encode($pdfdoc));
// main header
$headers = "From: ".$from.$eol;
$headers .= "MIME-Version: 1.0".$eol;
$headers .= "Content-Type: multipart/mixed; boundary=\"".$separator."\"";
$body = "--".$separator.$eol;
$body .= "Content-Transfer-Encoding: 7bit".$eol.$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)){
echo "<b>Email successfully sent</b>";
}
else{
echo "Your message could not be sent.";
}
}
?>
任何帮助都将不胜感激。事实上,我有一些从零开始单枪匹马写这种东西的经验。在维护一个自制的PHP电子邮件生成器多年之后,我的建议是您不应该这样做。当然,现在(无论何时)研究并找到最受支持的主流解决方案比编写自己的解决方案(并用时间和/或资源为所有固有的bug付费)所需的时间和资源要少.如果您没有足够的信心来正确地实现手动发送电子邮件和/或调试它,为什么不使用对您来说很好的库呢?像phpmailerI second@zerkms一样,你最好只使用一个库来发送,除非你是必须直接控制它的人之一。phpmailer是使用php发送邮件的最简单方法。我一直在使用它,觉得它比手工操作简单得多;说真的,除非你知道香肠是怎么做的,否则就把香肠的制作外包出去
sendmail
著名的说法是这里有锋利的边缘。“小心点!”古萨-谢谢你的评论。下一次我会看一些其他的东西,但现在我只是想让它起作用。谢谢你的评论。@helenney你不明白。这行不通。例如,您的$separator是不确定的。您需要对各种MUA如何解释各种硬编码MIME语句进行大量研究。这只是基于一个肤浅的阅读——你处在一个痛苦的世界。