PHP 发送Email的几种方法

在php中发送Email可以直接调用系统的mail()函数来完成,但是前提是你在php.ini文件中对mail都已经配置好了,以下为相关的配置信息:

Mail 配置选项

名称 默认 描述 可更改

SMTP "localhost" Windows 专用:SMTP 服务器的 DNS 名称或 IP 地址。 PHP_INI_ALL

smtp_port "25" Windows 专用:SMTP 段口号。自 PHP 4.3 起可用。 PHP_INI_ALL

sendmail_fromNULL

Windows 专用:规定从 PHP 发送的邮件中使用的 "from"

地址。

PHP_INI_ALL

sendmail_path NULL Unix 系统专用:规定sendmail 程序的路径(通常 /usr/sbin/sendmail 或 /usr/lib/sendmail) PHP_INI_SYSTEM

上面写的很清楚,要是windows的服务器,必须装好开启本地的smtp服务器,在linux和unix下,要用到sendmail,所以得配置好sendmail,根据自己的实际情况选择适当的配置信息。

mail()函数如果邮件的投递被成功地接收,则返回 true,否则返回 false,语法:

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

参数 描述

$to 必需。规定邮件的接收者。

$subject 必需。规定邮件的主题。该参数不能包含任何换行字符。

$message 必需。规定要发送的消息。

$headers 必需。规定额外的报头,比如 From, Cc 以及 Bcc。

$parameters 必需。规定 sendmail 程序的额外参数。

简单的发封邮件,代码如下:

如果是一封带HTML格式的Email则代码如下:

函数很简单,看似很好用,但是实际上局限性很明显,必须是在本地的开启smtp的情况下,而且经过测试成功率不是很高,所以程序中很少有人用到mail()函数来发邮件。

如果要扩展功能的话,还得重新构造,网上也有好多现成的类可以直接调用来实现,其实就是靠fsockopen来进行连接smtp,下面的代码是个思路:

以上在网上看到的,其实具体的方法都是大同小异,用的很多的是一个开源的叫phpmailer,很方便的。用搜索引擎搜下然后下载就行。

这里贴出phpmailer的测试代码: