|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
也或许是因为我还没有真正的学到深处吧,说实在的,PHP中的很多高级点的应用,如PHP类、PHP函数基本还是不懂吧!
一个发送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 Provider's 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函数的模式仍是不异的:
大部分语言的基础,不是说c有多好,而是c相对起手容易学,让你认为这个是编程语言, |
|