PHP邮件发送函数详解
PHP邮件发送函数是PHP语言中封装好的发送邮件的函数,可以通过SMTP服务器发送邮件。PHP邮件发送函数非常常用,可以用于网站注册、密码找回、邮件通知等很多场景。
PHP邮件发送函数包括mail()和PHPMailer两种方式,本文将详细介绍这两种方式的使用方法、案例和注意事项。
一、mail()函数
mail()函数是PHP原生支持的邮件发送函数,使用简单,只需传递几个参数即可。
1.函数说明
mail()函数用于发送邮件,可以通过SMTP服务器发送邮件,也可以通过本地的Sendmail程序发送邮件,具体取决于PHP配置。
2.语法
bool mail ( string $to , string $subject , string $message [, string $additional_headers [, string $additional_parameters ]] )
注意:在使用mail()函数发送邮件时,需要在php.ini文件中配置SMTP服务器地址、端口号、账号和密码等信息。
3.函数参数
参数|说明
-|-
to|收件人邮件地址,可以是逗号分隔的多个邮件地址
subject|邮件主题
message|邮件内容
additional_headers(可选)|附加的邮件头信息,例如From、Cc、Bcc、Reply-To等
additional_parameters(可选)|附加的参数配置,可以通过此参数传递SMTP服务器信息、连接超时时间等参数
4.使用案例
示例代码:
$to = 'receiver@163.com';
$subject = '邮件主题';
$message = '邮件正文';
$headers = 'From: sender@163.com' . "\r
" .
'Cc: copy@163.com' . "\r
" .
'Bcc: hidden@163.com' . "\r
" .
'X-Mailer: PHP/' . phpversion();
if (mail($to, $subject, $message, $headers)) {
echo '邮件发送成功';
} else {
echo '邮件发送失败';
}
在以上代码中,$to为收件人邮件地址,$subject为邮件主题,$message为邮件正文,$headers为附加的邮件头信息,包括发件人、抄送人、暗送人和X-Mailer信息。如果邮件发送成功,输出“邮件发送成功”,否则输出“邮件发送失败”。
二、PHPMailer
PHPMailer是一个常用的PHP邮件发送类库,提供丰富的邮件发送功能,支持SMTP和Sendmail两种发送方式。使用PHPMailer发送邮件,需要下载并引入PHPMailer类库文件,在代码中实例化一个PHPMailer对象,并设置相关参数即可。PHPMailer比mail()函数更加强大和灵活,下面是详细介绍。
1.类库下载与引入
PHPMailer类库可以在其官网(https://github.com/PHPMailer/PHPMailer)上下载,下载完毕后,将PHPMailer类库文件夹拷贝到项目目录下,并引入PHPMailer类文件即可。
示例代码:
require 'PHPMailer/PHPMailerAutoload.php';
2.类库使用
使用PHPMailer类库发送邮件,首先需要实例化一个PHPMailer对象,然后根据需要进行各种参数配置和操作,最后调用send()方法发送邮件。
示例代码:
$mail = new PHPMailer;
// 邮件服务器配置
$mail->isSMTP(); // 使用SMTP发送邮件
$mail->Host = 'smtp.163.com'; // SMTP服务器地址
$mail->SMTPAuth = true; // 开启SMTP身份验证
$mail->Username = 'sender@163.com'; // SMTP账号
$mail->Password = 'password'; // SMTP密码
$mail->SMTPSecure = 'ssl'; // 安全协议(可选)
$mail->Port = 465; // SMTP服务器端口号
// 邮件内容配置
$mail->From = 'sender@163.com'; // 发件人
$mail->FromName = '发件人名称'; // 发件人名称(可选)
$mail->addAddress('receiver@163.com', '收件人'); // 收件人
$mail->addAddress('copy@163.com', '抄送'); // 抄送人(可选)
$mail->addAddress('hidden@163.com', '密送'); // 密送人(可选)
$mail->addReplyTo('reply@163.com', '回复'); // 回复邮件地址(可选)
$mail->addAttachment('/var/tmp/file.tar.gz'); // 添加附件(可选)
$mail->isHTML(true); // 邮件内容是否为HTML格式
$mail->Subject = '邮件主题'; // 邮件主题
$mail->Body = '邮件正文'; // 邮件正文,支持HTML编码
$mail->AltBody = '邮件正文(纯文本)'; // 邮件正文(纯文本)
if($mail->send()) {
echo '邮件发送成功';
} else {
echo '邮件发送失败: ' . $mail->ErrorInfo;
}
在以上代码中,$mail为PHPMailer对象,在实例化时进行了SMTP服务器、账号和密码、安全协议、端口号等参数配置,同时设置了发件人、收件人、抄送人、密送人、回复邮件地址、附件、邮件格式、主题和正文等信息。如果邮件发送成功,输出“邮件发送成功”,否则输出“邮件发送失败”。
三、注意事项
无论是使用mail()函数还是PHPMailer类库,发送邮件都需要注意以下几个问题:
1.SMTP服务器设置
在使用邮件发送函数时,需要在php.ini文件中配置SMTP服务器地址、端口号、账号和密码等信息。如果使用PHPMailer类库发送邮件,则需要在PHPMailer对象中配置SMTP服务器信息。
2.邮件头信息
在发送邮件时,需要设置邮件头信息,包括发件人、收件人、抄送人、暗送人、主题、日期、MIME类型等。
3.邮箱限制
由于邮件系统的限制,很多邮箱都设置了垃圾邮件、广告邮件和恶意邮件的过滤机制,如果邮件内容或邮件发送方式被识别为垃圾邮件,就可能会被直接过滤掉或者发送失败。因此在发送邮件时,需要注意邮件格式、邮件内容、发送频率和发送方式等因素。
四、总结
PHP邮件发送函数是很常用的功能,不论是使用mail()函数还是PHPMailer类库,都需要合理配置相关参数和设置邮件头信息,注意邮箱限制和发送频率等因素,以确保邮件发送成功。
