近来一直都在处理关于电子邮件服务器的网络应用,在此给大家提供一些相关要点知识。

使用PHP可以方便、快捷滴开发很多基于E-mail的应用,如邮件列表以及企业或个人电子邮件系统等。电子邮件服务一般采用UNIX系统下的免费电子邮件传输代理(MTA、Mail Transfer Agent)系统,如使用Qmail、Postfix、Sendmail等构建,作为Linux/UNIX 的天生战友,PHP使用这些MTA将更适合。

当然PHP在Win32也可以使用Imail、Exchange之类的服务发送邮件,或者使用外部SMTP来发送也是可以的。

邮件传输代理(MTA、Mail Transfer Agent)是邮件服务器的核心,MTA最大的任务是从其他的SMTP服务器访问电子邮件内容,以及传递给正确地址的mail缓冲池。

MTA作为邮件服务器的管家,负责看管进入服务器的钥匙,它负责分配mail并且询问访问者的合法身份,如果访问者被识别为垃圾邮件地址,MTA将立即拒绝从该电子邮件地址发送的邮件传递行为,若这个访问者不是垃圾邮件,MTA将开始检查信封和接收地址是否为一个正常的邮件服务器,若不是,则将“Return to sender, underliverable as addressd” 信息返回到该信封并删除到邮件箱的输出。如果邮件地址经过验证后无误,MTA将信发送到用户的收件箱(实际上是保存在用户的home目录或MTA指定的目录位置)。

220 receipthost ESMTP
HELO
250 receipthost
MAIL From:<[email protected]>
250 ok
RCPT To:<receiver@receipthost>
250 ok
DATA
354 This is message
Mail body here.
.
250 Message accepted for delivery
QUIT
221 receipthost closing connection</receiver@receipthost></[email protected]>

比较知名的MTA邮件服务软件有:

  1. Sendmail(www.sendmail.org)
  2. Qmail(www.qmail.org)
  3. Postfix(www.postfix.org)

可以根据需要选择一款邮件传输服务器来安装,建议使用Qmail或Postfix,相关安装和配置可以参考这些官方网站的手册。

PHP的邮件配置

发送电子邮件功能内置于PHP中,但是若要从服务器中发送电子邮件,还需要对php.ini配置文件做一个小小的改动。

1. UNIX系统配置
在UNIX环境里,假定已经安装了Sendmail,一般路径为/usr/sbin/sendmail或/usr/lib/sendmail。
如果安装了Qmail或Postfix之类的邮件服务端,它会将该路径内的sendmail替换为自己的程序,名字仍为sendmail作为UNIX一个通用的外壳。

2. Windows系统配置
在Windows系统中,需要在php.ini配置文件中设置两个变量。

SMTP:一个SMTP服务器应该包括已经由DNS正确解析或互联网上可以访问的IP地址。如果确认本地已经安装了SMTP服务,并且可以被互联网连接访问,则该项指定为localhost。

Sendmail_from:一个包括E-mail地址的字符串(例如:[email protected])。
如果本地Web服务器是IIS,并且在完全安装的情况下,SMTP服务已经内置,则也可以安装Microsoft Exchange或Imail服务器。

另外,如果使用PHPmailer类或外部SMTP服务器发送邮件,也可以不用设置php.ini配置文件。

如果本地服务器安装了MTA,则必须能够与Internet直接连接才能发送邮件,否则只能选择外部SMTP服务器。