PHP 怎样发送邮件?

知道91 | PHP | 2014-01-21 | 阅读:5736

发送电子邮件是再平常不过的事了,但是你知道怎样利用PHP在程序中自动发送邮件吗?本节讲解使用 PHP 本身的函数发送邮件。

PHP mail() 函数

PHP 使用 mail() 函数用于从脚本中发送电子邮件。其基本语法如下所示

mail(to,subject,message,headers,parameters)

各个参数说明如下所示:

参数 描述
to 必需。规定 email 接收者。
subject 必需。规定 email 的主题。注释:该参数不能包含任何新行字符。
message 必需。定义要发送的消息。应使用 LF (\n) 来分隔各行。
headers 可选。规定附加的标题,比如 From、Cc 以及 Bcc。

应当使用 CRLF (\r\n) 分隔附加的标题。

parameters 可选。对邮件发送程序规定额外的参数。

特别注意的是Message行之间必须以一个 LF(\n)分隔。每行不能超过 70 个字符。(Windows 下)当 PHP 直接连接到 SMTP 服务器时,如果在一行开头发现一个句号,则会被删掉。要避免此问题,将单个句号替换成两个句号。参考以下代码:


PS:PHP 需要一个已安装且正在运行的邮件系统,以便使邮件函数可用。所用的程序通过在 php.ini 文件中的配置设置进行定义。如果你使用的虚拟主机,注意虚拟主机服务商已经开启了邮件系统,一边 mail()函数有效。

PHP 发送邮件例子

下面的代码是利用 PHP 发送一个最简单的邮件


下面的例子是增加了可选参数(headers), 这样可以告诉 MUA 邮件的来源和回复地址,代码如下:


你平时有可能已经注意一些广告发来的邮件非常绚丽,这些邮件都是以HTML的格式发送,同样PHP 可以发送HTML格式的邮件。示例代码如下所示



  Birthday Reminders for August


  

Here are the birthdays upcoming in August!

PersonDayMonthYear
Joe3rdAugust1970
Sally17thAugust1973
'; // To send HTML mail, the Content-type header must be set $headers = 'MIME-Version: 1.0' . "\r\n"; $headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n"; // Additional headers $headers .= 'To: Mary , Kelly ' . "\r\n"; $headers .= 'From: Birthday Reminder ' . "\r\n"; $headers .= 'Cc: birthdayarchive@example.com' . "\r\n"; $headers .= 'Bcc: birthdaycheck@example.com' . "\r\n"; // Mail it mail($to, $subject, $message, $headers); ?>

上面的例子是使用 PHP 的mail()发送邮件,这种发送邮件的优点是非常简单,一个函数搞定,弊端就是受条件限制,程序所在的服务器必须支持邮件系统,在后面将讲解 使用第三方的 SMTP 发送邮件。