从脚本发送电子邮件是Web应用程序中非常有用的功能。
大多数使用电子邮件发送功能向用户发送通知。
如果使用PHP或者使用PHP开发的Web应用程序,则使用PHP从脚本发送电子邮件非常容易。
PHP提供了一种从发送电子邮件的简单方法。
我们可以在PHP中发送带有Mail()函数的文本或者HTML电子邮件。
但有时需要扩展电子邮件功能以发送与邮件的附件。
在本教程中,我们将展示如何在PHP中发送带有附件的电子邮件。
在示例脚本中,我们将简单地将包括任何类型的文件作为附件(如图像,.doc,.docx,.pdf,.txt等)发送文本或者HTML电子邮件。
使用附件发送HTML电子邮件
具有一些MIME类型标头的PHP邮件()函数可用于在PHP中发送带有附件的电子邮件。
在以下示例代码中,MIME和Content-Type标题与Mail()函数一起使用,以使用PHP向电子邮件发送附件。
- '$to' - 收件人电子邮件地址。
- '$from' - 发件人电子邮件地址。
- '$fromname' - 发件人姓名。
- '$subject' - 电子邮件的主题。
- '$file' - 要用电子邮件添加的文件的相对路径。
- '$HTMLContent' - 电子邮件的身体内容(文本或者HTML)。
以下脚本允许我们将两种类型的消息(文本或者HTML)与附件文件发送到电子邮件。
<?php
//Recipient
$to = 'recipient@example.com';
//Sender
$from = 'sender@example.com';
$fromName = 'onitroad';
//Email subject
$subject = 'PHP Email with Attachment by onitroad';
//Attachment file
$file = "files/onitroad.pdf";
//Email body content
$htmlContent = '
<h3>PHP Email with Attachment by onitroad</h3>
<p>This email is sent from the PHP script with attachment.</p>
';
//Header for sender info
$headers = "From: $fromName"." <".$from.">";
//Boundary
$semi_rand = md5(time());
$mime_boundary = "==Multipart_Boundary_x{$semi_rand}x";
//Headers for attachment
$headers .= "\nMIME-Version: 1.0\n" . "Content-Type: multipart/mixed;\n" . " boundary=\"{$mime_boundary}\"";
//Multipart boundary
$message = "--{$mime_boundary}\n" . "Content-Type: text/html; charset=\"UTF-8\"\n" .
"Content-Transfer-Encoding: 7bit\n\n" . $htmlContent . "\n\n";
//Preparing attachment
if(!empty($file) > 0){
if(is_file($file)){
$message .= "--{$mime_boundary}\n";
$fp = @fopen($file,"rb");
$data = @fread($fp,filesize($file));
@fclose($fp);
$data = chunk_split(base64_encode($data));
$message .= "Content-Type: application/octet-stream; name=\"".basename($file)."\"\n" .
"Content-Description: ".basename($file)."\n" .
"Content-Disposition: attachment;\n" . " filename=\"".basename($file)."\"; size=".filesize($file).";\n" .
"Content-Transfer-Encoding: base64\n\n" . $data . "\n\n";
}
}
$message .= "--{$mime_boundary}--";
$returnpath = "-f" . $from;
//Send email
$mail = @mail($to, $subject, $message, $headers, $returnpath);
//Email sending status
echo $mail?"<h1>Email Sent Successfully!</h1>":"<h1>Email sending failed.</h1>";
?>
示例脚本允许我们向电子邮件发送单个附件,发送带有多个附件的电子邮件,请按照本教程发送具有多个PHP中的附件的发送电子邮件
向多个收件人发送电子邮件:
我们可以使用CC和BCC标头立即向多个收件人发送电子邮件。
使用CC和BCC标头用于在PHP中的多个收件人附件发送电子邮件。
$headers .= "\nCc: mail@example.com"; $headers .= "\nBcc: mail@example.com";
日期:2020-06-02 22:15:59 来源:oir作者:oir
