php 中使用 mail 函数发送电子邮件需以下步骤:创建邮件函数对象,指定收件人、主题、正文和额外的标头信息。发送邮件,将标头信息和正文以 \n 分隔。检查发送状态,返回一个布尔值表示成功或失败。
PHP 函数如何发送电子邮件
在 PHP 中使用函数发送电子邮件非常简单。本教程将指导您发送电子邮件所需的步骤,并提供一个实战案例。
步骤
1. 创建邮件函数对象
要发送电子邮件,我们需要创建 PHP 的 mail() 函数对象。此函数需要四个参数:
- 收件人电子邮件地址
- 邮件主题
- 邮件正文
- 额外的标头信息(可选)
以下是一个示例:
立即学习“PHP免费学习笔记(深入)”;
1
2
3
|
$to = 'recipient@example.com' ;
$subject = 'Test Email' ;
$body = 'Hello World! This is a test email.' ;
|
2. 设置额外的标头信息(可选)
对于某些电子邮件客户端,设置额外的标头信息可以提高可信度。您可以使用 \r\n 将多行标头信息附加到邮件正文。
以下是一些常见的标头信息:
- From: 发件人的电子邮件地址
- Reply-To: 收件人可以回复的电子邮件地址
- Content-Type: 指定电子邮件正文的格式(例如,text/html)
以下是一个设置额外标头信息的示例:
1
2
3
|
$headers = "From: sender@example.com\r\n" ;
$headers .= "Reply-To: sender@example.com\r\n" ;
$headers .= "Content-Type: text/html\r\n" ;
|
3. 发送邮件
一旦您设置好邮件函数对象,就可以发送电子邮件了。使用 \n 分隔标头信息和邮件正文:
1
|
$success = mail( $to , $subject , $body , $headers );
|
4. 检查发送状态
mail() 函数会返回一个布尔值,表示发送是否成功。您可以使用它来处理错误或显示成功消息:
1
2
3
4
5
|
if ( $success ) {
echo 'Email sent successfully!' ;
} else {
echo 'Failed to send email.' ;
}
|
实战案例
发送带有附件的 HTML 格式的电子邮件:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
$to = 'recipient@example.com' ;
$subject = 'Sending HTML Email with Attachment' ;
$body = '<p>Hello World! This is an <b>HTML</b> email.</p>' ;
$headers = "From: sender@example.com\r\n" ;
$headers .= "Reply-To: sender@example.com\r\n" ;
$headers .= "Content-Type: text/html\r\n" ;
$attachment = 'path/to/attachment.txt' ;
$boundary = uniqid();
$headers .= "MIME-Version: 1.0\r\n" ;
$headers .= "Content-Type: multipart/mixed; boundary=$boundary\r\n" ;
$multipart = "--$boundary\r\n" ;
$multipart .= "Content-Type: text/html\r\n\r\n" ;
$multipart .= $body . "\r\n" ;
$multipart .= "--$boundary\r\n" ;
$multipart .= "Content-Type: application/octet-stream\r\n" ;
$multipart .= "Content-Disposition: attachment; filename=" . basename ( $attachment ) . "\r\n" ;
$multipart .= "Content-Transfer-Encoding: base64\r\n\r\n" ;
$multipart .= chunk_split ( base64_encode ( file_get_contents ( $attachment )));
$success = mail( $to , $subject , $multipart , $headers );
|
登录后复制