从php表单生成的空白电子邮件
我有下面的代码,当有人点击表单上的发送按钮时执行 我的问题是,我收到了一封主题行和发件人/收件人地址正确的电子邮件。但是,如果电子邮件包含附件,则正文为空。但是,如果没有电子邮件附件,电子邮件正文将填充用户输入的文本 我应该注意的是,我知道代码并不像当前状态那样安全,并且没有限制上传像exe这样的不适当文件。然而,我不想或不需要一个教训,如何使代码安全。我只需要帮助,了解如何/为什么上传附件时不填充文本正文从php表单生成的空白电子邮件,php,email-attachments,Php,Email Attachments,我有下面的代码,当有人点击表单上的发送按钮时执行 我的问题是,我收到了一封主题行和发件人/收件人地址正确的电子邮件。但是,如果电子邮件包含附件,则正文为空。但是,如果没有电子邮件附件,电子邮件正文将填充用户输入的文本 我应该注意的是,我知道代码并不像当前状态那样安全,并且没有限制上传像exe这样的不适当文件。然而,我不想或不需要一个教训,如何使代码安全。我只需要帮助,了解如何/为什么上传附件时不填充文本正文 <?php //send email
<?php
//send email
if(isset($_POST['sendemail']))
{
$txtSid = md5(uniqid(time()));
$emailsubject = $_POST['emailsubject'];
$emailpriority = $_POST['emailpriority'];
$emailto = $_POST['emailto'];
$emailcc = $_POST['cc'];
$emailbcc = $_POST['bcc'];
$txtFilesName = $_FILES["attachment"]["name"];
$emailbody = $_POST['wysiwg_editor'];
//if their is an attachment add notice in body of email
if($txtFilesName !='')
{
$emailbody = "$emailbody <br /><br />File name $txtFilesName attached to this email.";
}
$headers = "From: $my_fname $my_lname <$my_emailaddr>\r\n";
$headers .= "Reply-To: $my_fname $my_lname <$my_emailaddr>\r\n";
$headers .= "CC: $emailcc\r\n";
$headers .= "BCC: $emailbcc\r\n";
$headers .= "MIME-Version: 1.0\n";
$headers .= "Content-Type: multipart/mixed; boundary=\"".$txtSid."\"\n\n";
$headers .= "This is a multi-part message in MIME format.\n";
$headers .= $emailbody."\n\n";
if($emailpriority == 'high priority')
{
$headers .= "X-Priority: 1 (Highest)\n";
$headers .= "X-MSMail-Priority: High\n";
$headers .= "Importance: High\n";
}
$headers .= "--".$txtSid."\n";
$headers .= "Content-type: text/html; charset=utf-8\n";
$headers .= "Content-Transfer-Encoding: 7bit\n\n";
/***********Email Attachment************/
if($_FILES["attachment"]["name"] != "")
{
$txtFilesName = $_FILES["attachment"]["name"];
$txtContent = chunk_split(base64_encode(file_get_contents($_FILES["attachment"]["tmp_name"])));
$headers .= "--".$txtSid."\n";
$headers .= "Content-Type: application/octet-stream; name=\"".$txtFilesName."\"\n";
$headers .= "Content-Transfer-Encoding: base64\n";
$headers .= "Content-Disposition: attachment; filename=\"".$txtFilesName."\"\n\n";
$headers .= $txtContent."\n\n";
}
mail("$emailto","$emailsubject","$emailbody","$headers");
echo "<div class='alert alert-success'>Email Sent!</div>";
}
好的,我重新复制并粘贴了我正在使用的代码,它解决了我的问题。似乎我需要$headers.=$emailbody。\n\n;if电子邮件附件部分内的代码行。在检测是否上载了附件的if语句下,您没有将以前的emailbody和通知组合在一起。相反,请使用以下代码:
$emailbody = $emailbody."<br /><br />File name ".$txtFilesName." attached to this email.";
你的PHP日志中有错误吗?我在错误日志中没有看到任何东西。通常,如果它们是我根目录中的一个错误,我会有一个error_log.txt文件来帮助我,但我似乎没有一个解决这个问题的文件