如何在PHP中附加带有反馈表的文件?
反馈表用于通过邮件服务从用户那里获得评论。邮件是当今大多数 Web 服务器所需的服务器端实用程序之一。在PHP中, mail()是内置函数,用于从PHP脚本以纯文本形式或格式化的 HTML 发送电子邮件。您还可以编写一个脚本,将任何文件附加到您的邮件中,从发送带有电子邮件的附件文章中。
PHP邮件函数具有以下基本语法:
在反馈表单中附加文件:要发送带有附件作为反馈的电子邮件,我们需要使用 multipart/mixed MIME 类型(将 Content-type 标头设置为 multipart/mixed)指定混合类型将包含在电子邮件中。此外,我们希望使用多部分/替代 MIME 类型来发送电子邮件的纯文本和 HTML 版本。文本和附件部分可以在边界内指定。边界以两个连字符开头,后跟一个唯一编号,该编号不能出现在电子邮件的消息部分中。一个PHP函数md5()用于创建一个 32 位的十六进制数字来创建一个唯一的数字。表示电子邮件最后部分的最后边界也必须以两个连字符结尾。
为了在我们的消息中包含附件,我们将指定文件中的数据读入一个字符串,使用base64_encode()函数对其进行编码以更安全地传输,使用chunk_split()函数将其拆分为更小的块以确保它与 MIME 匹配规格,然后将其作为附件包含在内。
例子:
GeeksforGeeks
Hello, '.$name.'
Message:'.$message.'
';
$msg = "Please find the attachment
Thank You.";
$s_m = md5(uniqid(time()));
$headers = "From: ".$fromemail;
$mime_boundary = "==Multipart_Boundary_x{$s_m}x";
$headers .= "\nMIME-Version: 1.0\n" .
"Content-Type: multipart/mixed;\n" .
" boundary=\"{$mime_boundary}\"";
if($_FILES["file"]["name"]!= ""){
$file_name = $_FILES["file"]["name"];
$content = chunk_split(base64_encode(
file_get_contents($_FILES["file"]["tmp_name"])));
$msg .= "This is a multi-part message in MIME format.\n\n" .
"--{$mime_boundary}\n" .
"Content-Type:text/html; charset=\"iso-8859-1\"\n" .
"Content-Transfer-Encoding: 7bit\n\n" .
$msg .= "\n\n";
$msg .= "--{$mime_boundary}\n" .
"Content-Type: application/octet-stream;\n" .
" name=\"{$file_name}\"\n" .
// "Content-Disposition: attachment;\n" .
// " filename=\"{$fileatt_name}\"\n" .
"Content-Transfer-Encoding: base64\n\n" .
$content .= "\n\n" .
"--{$mime_boundary}--\n";
}
if(mail($toemail, $subject, $msg, $headers)){
$Msg= "Email send successfully with attachment";
}else{
$Msg= "Email Not sent";
}
}
?>
Sending file attachment with email
输出:
- 反馈表 GUI:
- 收到邮件后:
在 XAMPP 的 localhost 上使用 mail():可以使用 Sendmail 包从 localhost 发送邮件,Sendmail 包在 XAMPP 中内置。
- 第 1 步:在C:\xampp\ PHP\ PHP.ini中找到extension=php_openssl.dll并从该行的开头删除分号,以使 SSL 适用于本地主机的 gmail。
- 第 2 步:在PHP.ini文件中找到[mail 函数]并更改
SMTP=smtp.gmail.com smtp_port=587 sendmail_from = gmail-id@gmail.com sendmail_path = "\"C:\xampp\sendmail\sendmail.exe\" -t"
- 第 3 步:在C:\xampp\sendmail\sendmail.ini 中。将sendmail.ini中的所有现有代码替换为以下代码:
[sendmail] smtp_server=smtp.gmail.com smtp_port=587 error_logfile=error.log debug_logfile=debug.log auth_username=gmail-id@gmail.com auth_password=gmail-password force_sender=gmail-id@gmail.com
- 第 4 步:根据需要更改gmail-id@gmail.com和gmail-password 。重新启动服务器 XAMMP 控制面板,使更改生效。
- 第 5 步:创建一个PHP文件并发送邮件。
注意:然而, PHP mail()函数是PHP核心的一部分,但您需要在您的机器上设置一个邮件服务器才能使其真正工作。