逍遥一派 发表于 2015-2-4 00:03:36

PHP网页设计若何用PHP发电子邮件(1)

也或许是因为我还没有真正的学到深处吧,说实在的,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相对起手容易学,让你认为这个是编程语言,

蒙在股里 发表于 2015-2-4 08:23:59

说点我烦的低级错误吧,曾经有次插入mysql的时间 弄了300年结果老报错,其实mysql的时间是有限制的,大概是到203X年具体的记不清啦,囧。

不帅 发表于 2015-2-4 18:07:56

如果你已经到这种程度了,那么你已经可以做我的老师了。其实php也分很多的区域,

金色的骷髅 发表于 2015-2-5 10:55:02

开发工具也会慢慢的更专业,每个公司的可能不一样,但是zend studio是个大伙都会用的。

冷月葬花魂 发表于 2015-2-11 09:21:47

建数据库表的时候,int型要输入长度的,其实是个摆设的输入几位都没影响的,只要大于4就行,囧。

简单生活 发表于 2015-2-21 21:08:47

做为1门年轻的语言,php一直很努力。

精灵巫婆 发表于 2015-3-6 21:41:28

为了以后维护的方便最好是代码上都加上注释,“予人方便,自己方便”。此外开发文档什么的最好都弄齐全。我觉得这是程序员必备的素质。虽然会消耗点很多的时间。但是确实是非常有必要的。

山那边是海 发表于 2015-3-11 19:27:43

找到的的资料很多都是在论坛里的,需要注册,所以我一般没到一个论坛都注册一个id,所有的id都注册成一样的,这样下次再进来的时候就不用重复注册啦。当然有些论坛的某些资料是需要的付费的。

乐观 发表于 2015-3-19 09:36:34

使用 jquery 等js框架的时候,要随时注意浏览器的更新情况,不然很容易发生框架不能使用。

愤怒的大鸟 发表于 2015-3-27 15:39:15

基础有没有对学习php没有太大区别,关键是兴趣。

小妖女 发表于 2015-3-31 11:45:59

没接触过框架的人,也不用害怕,其实框架就是一种命名规范及插件,学会一个框架其余的框架都很好上手的。

只想知道 发表于 2015-4-1 23:11:07

php是动态网站开发的优秀语言,在学习的时候万万不能冒进。在系统的学习前,我认为不应该只是追求实现某种效果,因为即使你复制他人的代码调试成功,实现了你所期望的效果,你也不了解其中的原理。

飘飘悠悠 发表于 2015-4-2 19:33:50

我学习了一段时间后,我发现效果并不好(估计是我自身的问题)。因为一个人的精力总是有限的,同时学习这么多,会导致每个的学习时间都得不到保证。

柔情似水 发表于 2015-4-21 04:07:23

我还是推荐用firefox ,配上firebug 插件调试js能省下不受时间。谷歌的浏览器最好也不少用,因为谷歌的大侠们实在是太天才啦,把一些原来的js代码加了一些特效。

兰色精灵 发表于 2015-4-21 12:09:27

写js我最烦的就是 ie 和 firefox下同样的代码 结果显示的结果千差万别,还是就是最好不要用遨游去调试,因为有时候遨游是禁用js的,有可能代码是争取结果被遨游折腾的认为是代码写错。

第二个灵魂 发表于 2015-5-4 16:27:56

本人接触php时间不长,算是phper中的小菜鸟一只吧。由于刚开始学的时候没有名师指,碰过不少疙瘩,呗很多小问题卡过很久,白白浪费不少宝贵的时间,在次分享一些子的学习的心得。

深爱那片海 发表于 2015-5-9 11:41:17

我还是推荐用firefox ,配上firebug 插件调试js能省下不受时间。谷歌的浏览器最好也不少用,因为谷歌的大侠们实在是太天才啦,把一些原来的js代码加了一些特效。

分手快乐 发表于 2015-6-14 22:44:40

实践是检验自己会不会的真理。

admin 发表于 2015-6-15 11:15:49

我要在声明一下:我是个菜鸟!!我对php这门优秀的语言也是知之甚少。但是我要在这里说一下php在网站开发中最常用的几个功能:

灵魂腐蚀 发表于 2015-6-20 06:59:03

php里的数组为空的时候是不能拿来遍历的;(这个有点低级啊,不过我刚被这个边界问题墨迹了好长一会)
页: [1] 2
查看完整版本: PHP网页设计若何用PHP发电子邮件(1)