0
我与附件发送邮件有问题。我有这个功能:(已解决)发送附件有问题的邮件
function mail_att($to, $subject, $message, $anhang) {
$absender = "Sender";
$absender_mail = "[email protected]";
$reply = "[email protected]";
$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);
}
但是,当我想发送一封邮件时,我什么也得不到。问题在哪里?我确定我输入正确的接收器电子邮件!邮件服务器没有问题,因为普通的电子邮件工作正常。
//编辑: 哦,我从来没有想过要使用phpmailer。这使得所有简单和它的作品。我所有的工作都是空虚的。但是,谢谢!
简单的答案:不要建立自己的哑剧电子邮件,尤其是附件。使用PHPMailer或Swiftmailer,它们都会将整个代码块减少到大约4或5行。同样,你只是简单地假设'mail()'正在工作。你检查了它的返回值吗?失败时返回false。你有没有检查你的传出服务器的邮件日志?也许这封电子邮件已被转储为垃圾邮件。 –
你正在发送到gmail帐户吗?谷歌过滤电子邮件与他们认为是“自动化”的来源发送附件臭名昭着。 –
**你什么都没得到?**我看到你正在尝试发送到>>'$ to' <<,但该变量**尚未定义**。它出现在某个地方的网络空间。 **添加**'$ to =“[email protected]”;'** ** **下方的$回复=“[email protected]”;'。 –