电信主站 网通分站
购买流程 付款方式 常见问题 在线提问 续租服务 购物车
用户名: 密 码: 忘记密码?
首 页
域名注册
虚拟主机
双线主机
服务器租用
VPS主机
企业邮局
代理专区
客服中心
虚拟主机行业资讯 虚拟主机评测对比 互联网最新动态 技术学院 站长资讯 在线教程 网站运营
搜索优化 服务器 网络编程 图形图象 站长之家 网页制作 操作系统
冲浪宝典 软件教学 视频通信 办公软件 邮件系统 网络安全 认证考试
您当前位置:西部数码->资讯中心-> 在线教程-> PHP
如何用PHP发电子邮件(1)-PHP教程,邮件处理
作者:网友供稿 点击:18
  西部数码-全国虚拟主机10强!20余项虚拟主机管理功能,全国领先!第6代双线路虚拟主机,南北访问畅通无阻!虚拟主机可在线rar解压,自动数据恢复设置虚拟目录等.虚拟主机免费赠送访问统计,企业邮局.Cn域名注册10元/年,自助建站480元起,免费试用7天,满意再付款!P4主机租用799元/月.月付免压金!
文章页数:[1] 
一个发送e-mail的脚本也许是你能够在web 站点上找到的最普通的脚本之一了,虽然它很简单,一个邮件脚本有时会令程序员非常沮丧.php中有一个叫做mail()的函数,它只需要知道接收方的地址和信件主体就可以发送邮件,但是要让mail()按你的意思运行你还需要解决一些棘手的问题.

要使mail()能够运行,你必须有一个smtp服务器以便php能够连接上去.不管这个服务器对邮件程序多么重要,大多数人对它如何运转没有一星半点的概念.在本教程中,我们将揭示smtp的秘密并解决一些使用php发送邮件的常见问题.而本文中的另一些主题将包括循环遍历一个地址列表的方法以及同时以文本和html格式向接收者发送一个邮件的方法.

smtp是简单邮件传输协议(simple mail transfer protocol)的缩写,而一个smtp服务器是一台运行这种协议并发出邮件的计算机.运行这种协议实际上指的是运行诸如sendmail和qmail的程序--如果你使用的是一台非windows计算机的话.在windows平台上,作为windows nt service pack一部分或是内建于windows 2000内部的smtp服务程序就是典型的这种程序.

我并不是说smtp软件包就只有那些,但是它们是最普通的.如果你的web站点使用了互联网服务提供者的主机软件包(internet service providers virtual hosting package)的一部分,那么smtp服务程序就应该已经在这台计算机上安装了.如果你是一台位于isp或是室内的计算机的系统管理员,那么你很有可能已经在这台计算机上安装了某种smtp软件,用来处理从web服务器发送邮件的过程.

但是,如果你是一个个人用户并只有一个开发用的web服务程序运行在你的个人电脑上,你可能没有在自己的机器上运行smtp软件.下面是一个非常简单但是准确的拇指定律:如果你是一个windows用户而从没有看见smtp服务器这样的字眼,那么你就没有运行这个程序.如果你确实没有,那么你有两种选择:安装,配置,和维护一个smtp服务程序(如果你不知道那是怎么一回事的话就不推荐你使用这种方法)或是使用一个现存的smtp服务器.

"如果一个服务器现在没有运行的话,我又怎么使用它呢?"你可能要问.如果你的计算机是通过拨号连接(或是dsl或电缆)连到互联网的话,你可以使用你isp的外发邮件服务器.例如,如果你开发用的 计算机是一个windows98的系统并使用56kbps modem通过earthlink连接到互联网,那么你就可以使用mail.earthlink.net作为你的smtp服务器.不论你对你的外发邮件服务器使用什么样的邮件客户端(eudora, outlook, netscape mail等等),它们都将和你的php代码使用你的smtp服务器的过程一样.技巧就是使php知道一点点事实.

在php.ini管理配置文件里,有几个条目需要被设置以便mail()函数能够正常运行.在改变它们以前,搞清楚它们都是做什么用的.你可以使用phpinfo()函数通过创建一个文件来显示系统当前的配置情况,这个文件包括:

<? phpinfo() ?>

保存这个文件,将它放置到你的web服务程序的文件根目录,然后通过你的浏览器访问它.你应该可以看到一个被优美的格式化了的信息,显示你的配置情况.你要查看的条目如下:

smtp
sendmail_from
sendmail_path
如果你没有使用windows,那么sendmail_path指令就是你唯一要担心的东西.如果你正在使用windows,你就需要看看最后两个指令.

如果你使用的是linux或是一个unix变种,sendmail_path看起来应该象这样:

sendmail_path = /usr/sbin/sendmail

或者如果你使用qmail:

sendmail_path = /var/qmail/bin/sendmail

在这条指令里,你还可以设置配置参数来指明队列缓冲选项或是显示的设置return-path头,如下所示:

sendmail_path = /usr/sbin/sendmail -t -fyou@yourdomain.com

作为一个非windows用户,这就是你要做的一切了.如果你使用的是windows,你有更多的事情要做.你还需要看一看smtp和sendmail_from的值.不要被sendmail_from指令名字中的sendmail弄迷糊了.虽然你没有在windows上使用名叫sendmail的程序,但那只是指令的名字.不要被它吓到了.

在你的phpinfo()显示的结果里,看看smtp和sendmail_from的缺省值--它们要么是空白,要么包含了胡乱的值.你应该把它们改成有意义的值.

如果你决心在这台电脑上运行一个smtp服务程序,你在php.ini文件中的条目就应该如下:

smtp = localhost

但是,如果你要使用你isp(在这个例子中是earthlink)的外发邮件服务器,那么php.ini中的邮件看起来应该如下:

smtp = mail.earthlink.net

你也可以使用ip地址而不是域名,因为计算机不区分这两种条目.

第二条配置指令是sendmail_from,它应该被设置成from头中的电子邮件地址.它可以在脚本里被修改但是通常作为缺省值使用.下面就是这个配置指令的示例youraddress@yourdomain.com指的是你自己的邮件地址.

sendmail_from = youraddress@yourdomain.com

在做了这些配置上的改动以后,重启web服务程序然后使用phpinfo()函数来验证这些修改.在这些工作完成以后,你就可以用php来发送电子邮件了.

mail()函数是非常简单的:只有五个参数,而其中的两个是可选的.这些参数是:

接收方地址
主题
信件内容
其它文件信息头(可选)
smtp服务程序的其它配置选项(可选)

附加的头参数控制了诸如cc, bcc, reply-to之类的邮件功能,或者其它遵循smtp协议的功能.在这个例子中,我只使用from 和 reply-to信息头.

如果你想给我发邮件但你使用的是一个非windows系统, 程序代码就应该如下:

<?
$to = "julie@thickbook.com";
$subject = "zdnet developer article";
$msg = "i completely understand smtp servers now!";
$headers = "from: me@mycompany.com\nreply-to: someoneelse@mycompany.com";
$config = "-fwebmaster@mycompany.com";
mail("$to", "$subject", "$msg", "$headers", "$config");
echo "finished!";
?>

如果你使用的是一个基于windows的smtp服务,那么你有可能不需要使用第五个参数,而且在附加的头信息参数中(也就是第四个参数),你需要将它们分开写--使用\r\n而不是\n.所以,同样的一个邮件通过基于windows的smtp服务发送的代码如下:

<?
$to = "julie@thickbook.com";
$subject = "zdnet developer article";
$msg = "i completely understand smtp servers now!";
$headers = "from: me@mycompany.com\r\nreply-to: someoneelse@mycompany.com";
mail("$to", "$subject", "$msg", "$headers");
echo "finished!";
?>

脚本中的echo语句使你的web浏览器在脚本运行完成的时候向你显示一条信息.如果不写echo语句,你就会得到一个"空文件"的对话框,因为没有任何输出能够发送到浏览器端.

只要能够连接到指定的smtp服务器mail()函数就会返回真值.但是这并不意味着邮件成功的到达了接收方那里.mail()函数不会等待或报告smtp服务器发来的成功/错误代码.

mail()函数有可能返回假值,然后给你警告"无法连接,在第x行"或是"未知的错误,在第x行."如果这两条信息中的任何一条出现了,你就应该检查php.ini中的smtp值.引起这些消息有两种可能:smtp服务器瘫痪了,或者php无法连接到它.无论是这两种情况中的哪一种,你的邮件都无法被发送出去.

这个脚本对这些参数使用硬编码的值.使用一个简单的html表单,你就可以在这些参数中插入一些值并拥有一个良好的反馈表单.

一旦你知道了如何给一个人发送邮件,你可能按奈不住要把同一个邮件发送给许多接收者--就象新闻信件一样.所有这些牵涉到一个漂亮轻巧的循环来遍历一个接收者的列表并将邮件发送给他们.mail函数的形式还是相同的:


文章整理:西部数码--专业提供域名注册虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!
相关主题
文章页数:[1] 
Google
热门文章
·Windows下的PHP5.0安装配制详解-PHP教程,PHP安装
·PHP在XP下IIS和Apache2服务器上的安装-PHP教程,PHP应用
·最近忙于FTP,好站多多!有好多好东东哦!不敢独享!-PHP教程,PHP基础
·PHP 5.0 Pear安装方法-PHP教程,PHP安装
·PHP开发利器-PRADO 1.6(4)-PHP教程,PHP应用
·Sun Sparc Solaris 2.6 Apache-1.3.12+MySQL-3.23.5+PHP-3.0.15 安装记-PHP教程,PHP应用
·php5学习笔记(转)-PHP教程,PHP应用
·APACHE安装笔记-PHP教程,PHP安装
·PHP.MVC的模板标签系统(四)-PHP教程,PHP应用
·PHP.MVC的模板标签系统(二)-PHP教程,PHP应用

最新文章
·PHP源码-利用 QQWry.Dat 实现 IP 地址高效检索
·Php高手带路--问题汇总解答[2]
·PHPQQ编程(2):取QQ在线状态
·php5手动最简安装方法
·福利彩票幸运号码自动生成器
·PHP开发利器-PRADO 1.6
·在Apache 服务器上启用PHP支持
·Windows2000_pro下安装Apache+PHP4+My
·php文件上传的实现
·PHP开发框架的现状和展望


 
 


版权申明:本站文章均来自网络,如有侵权,请联系我们,我们收到后立即删除,谢谢!

特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有。
  打印  刷新  关闭
返回首页 |关于我们 | 联系我们 | 付款方式 | 创业联盟 | 虚拟主机 | 资讯中心 | 友情链接 | 网站地图

版权所有 西部数码(www.west263.com)
CopyRight (c) 2002~2006 west263.com all right reserved.
公司地址:四川成都市万和路90号天象大厦4楼 邮编:610031
电话总机:028-86262244 86263048 86263408 86263960 86264018 86267838
售前咨询:总机转201 202 203 204 206 208
售后服务:总机转211 212 213 214
财务咨询:总机转224 223 传真:028-86264041 财务QQ:点击发送消息给对方635483282
售前咨询QQ:点击发送消息给对方2182518 点击发送消息给对方241975952 点击发送消息给对方275026793 点击发送消息给对方408235859
售后服务QQ:点击发送消息给对方17708515 点击发送消息给对方307742704 点击发送消息给对方287976517 点击发送消息给对方363783715
《中华人民共和国增值电信业务经营许可证》编号:川B2-20030065号