欢迎访问宙启技术站
智能推送

PHP邮件发送函数详解

发布时间:2023-06-06 06:36:06

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类库,都需要合理配置相关参数和设置邮件头信息,注意邮箱限制和发送频率等因素,以确保邮件发送成功。