频道直达 - 学院 - 下载 - 交易 - 特效 - 字库 - 手册 -排名-工具- 繁體
网页教学网站开发 设为首页
加入收藏
联系我们
建站搜索: 常用广告代码   用户注册 | 用户登陆
您当前的位置:中国建站之家 -> 网站开发设计技术教程 -> PHP教程 -> 用PHP发电子邮件2

用PHP发电子邮件2

作者:未知  来源:转载  发布时间:2005-7-21 10:32:48  发布人:acx

减小字体 增大字体

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函数的形式还是相同的:

mail([接收方], [主题], [邮件主体], [头信息]);

你只需要简单的用列表中的下一个名字来替换[接收方].假设你已经有了一个电子邮件地址的数组:

$addresses = array("me@mycompany.com", "you@yourcompany.com", "someone@otherplace.com");

你所需要做的就是循环遍历这个数组,取得新地址而后发送这个邮件.

如果你在数据库中拥有一个电子邮件地址的列表,同样的原则也是适用的:循环遍历它们.

你已经懂得要领了.显然,同样的概念对你特定的数据库类型和表结构来说也是适用的,虽然代码会需要做一些改动.

人们在循环遍历一个地址列表的时候似乎都忽视了一点:如果你有多于50个地址要处理,你的脚本在完成以前很可能超时,因为PHP对每一个脚本的运行有一个缺省为30秒的时间限制.你可以修改这个时间限制但是这样做的时候要小心.要把这种修改限定在特定的脚本上,比方说遍历一个地址列表发送邮件的脚本.否则,你可能亲手将服务器的线程超载,然后你的计算机将崩溃,从此万劫不复.

要在脚本中设置时间限制,你可以使用set_time_limit()函数.你可以设定时间限制,比如说60秒(set_time_limit(60)),或者你还可以让它一直运行直道它完成(set_time_limit(0)).

将这段代码加到你的脚本里,你的邮件地址遍历循环会很愉快的继续工作,直到邮件被发送给了列表中所有的地址.
发送HTML格式的电子邮件也是一种看起来难,做起来容易的事情.一但你学会了如何做这件事,你可能会因为自己曾经认为它很难而踢自己一脚.

我们需要对我们已经编写的邮件脚本做两个修改:

你的邮件应该是HTML格式的.
你必须添加content-type头信息.

这就是所有要做的事情.拥有一个能阅读HTML格式电子邮件客户端程序的接收方将看见他们的邮件以大的,粗体格式显示的信件.如果你发送的HTML格式邮件包括image置标,你一定要记住在src属性中使用完整的URL,例如: <img src="http://www.yourdomain.com/images/image.gif";>.

你还应该记住不是每一个人都能阅读HTML格式的电子邮件而且那些无法阅读这种格式的人只能看见HTML代码本身.这是另人讨厌的,所以最好三思而行.

结论
你可以用PHP以任何途径,方法或是可以想象到的任何形式来发送邮件.这个教程只是提供了基本的知识:配置你的服务器并发送简单的邮件.你还可以将附件和你用mail()函数产生的电子邮件一道发送,修改一大堆不同的头信息,还有做任何电子邮件客户端程序和邮件列表发送程序能够做的事情.

将本文收藏到QQ书签与更多好友分享
[打 印]
[] [返回上一页] [收 藏]
∷相关文章评论∷    (评论内容只代表网友观点,与本站立场无关!) [更多评论...]
精彩推荐
热门文章
· 注册码大全二
· 注册码大全四
· 注册码大全一
· 要10G免费网络硬盘的请进..
· 通过google 赶快来赚美金..
· 注册码大全十
· 头像-qq头像(qq新头像)4..
· 让你轻松架设FTP服务器1..
· 注册码大全三
· 梦幻背景图片7
· 卡通动物图片6
· 网页制作素材-按钮素材2..
· 让你轻松架设FTP服务器5..
· 风景图片8
· 注册码大全九
· 让你轻松架设FTP服务器2..
关注此文读者还看过
· ftp类(example.php)
· 一个使用用户控件(包括..
· 谷歌微软上演龙争虎斗 2..
· 验证码的程序及原理
· ASP.NET高级教程(2.2):转..
· 2006年10大变态站名网站..
· PHP程序员的自我修炼:P..
· 用JS得到字符串中出现次..
· 分类网站盈利新模式
· Photoshop打造前卫时尚美..
· PHP自动生成月历代码
· 用PS实现削皮效果(2)
· 灵活实用的页面广告实例..
· 我的Mysql碰到了 1067 错..
· ASP系列讲座(十一)Act..
· 网站提交Google注册应注..
相关文章
· 使用PHP的日期与时间函数提..
· 用PHP程序直接调用文本文件..
· 用PHP添加地图功能
· 用PHP命令行控制脚本
· 用PHP实现windows风格的树型..
· 新手学习用PHP程序对网页表..
· 用PHP5的DirectoryIterator..
· 用PHP程序实现删除目录的三..
· 用PHP程序实现从数组里筛选..
· 实用:使用PHP脚本修改Linu..
· 用PHP脚本生成word文档的程..
· 技巧:用PHP编写留言本应注意..
· 如何利用PHP+MYSQL保存和输..
· PHP实例:用PHP编写的网上调..
· 使用PHP开发网站过程中你注..
· PHP实例:用PHP实现多文件上..
关于本站 - 网站帮助 - 广告合作 - 下载声明 - 友情连接 - 网站地图 - 人才招聘
网站合作、内容监督、商务咨询:QQ: 9576619
Copyright ? 2005--2008 中国建站之家版权所有
粤ICP备05092265号