澳门新葡萄京娱乐场PHP高级特性讨论之邮件相关

邮件发送和收取是目前网上交流最为重要的途径之一,我们当然很希望自己的PHP程序也能够实现某些商业网站注册程序中采用的方法,即通过邮件方式进行密码发送和资料确认。另一方面,这种方式也是一种反馈用户信息的有效途径。当然,要实现这些功能是离不开邮件服务器的,目前比较流行的Mail服务器有:sendmail、qmail、postfix。至于如何配置其中的pop、
smtp、imap等服务已经超出这篇文章的范围,读者可以参考其他这方面文章。那么好了,我们究竟可以利用PHP来作些什么呢?

PHP 发送电子邮件


PHP 允许您从脚本直接发送电子邮件。


  1. 简单邮件发送
    PHP函数库中有一个mail函数,可以用来进行简单的邮件发送,函数原型为:
    boolean mail(string $to, string $subject, string $message, string
    [$additional]);
    $to指定邮件寄送地址,$subject指定邮件标题,$message指定邮件内容,$additional指定邮件的附加头部,例如:
    复制PHP内容到剪贴板PHP代码: ?php mail( ywg_澳门新葡萄京娱乐场,263@263.net, message from
    php, hello, xiaoyz! ); ? 就可以向 ywg_263@263.net发送一个标题为message
    from php 内容为hello,
    xiaoyz!的邮件,其中的邮件接受人$to可以是多个邮件地址,也就是说可以同时给多个人发送同一份邮件,邮件地址之间用逗号分隔,示例如下:
    复制PHP内容到剪贴板PHP代码: ?php $emails = Array( xiaoyz@birdy.dhs.org,
    xiaoyz@hotmail.com ); mail( implode(,, $emails), message from php,
    hello, xiaoyz! ); ?
    笔者做过的论坛程序中的注册部分就曾经使用过这种方法,不过最后还是采用了一种变通的形式,下文将会具体讲到。其中主要的需求是:当一个用户注册之后,必须得到组管理员的身份确认才能成为论坛的正式会员,我所采用的方法是:用户注册完成提交表单时,先把用户各种注册信息写入数据库,同时把用户的必要信息通过邮件的方式发送给用户所注册组的所有组管理员,当然,读者可能会觉得如果有人恶意注册了很多id的话是否会在数据库中造成很多垃圾信息呢?这种考虑是必要的,所以我们需要给出一个策略,提供一个管理界面,来剔除掉这些垃圾,一种简单的方法就是对于超过了给定时期还没有成为正式会员的id一律删除,前提就是必须保证组管理员要在给定时期之内审批这些id,否则会造成误删。读者可以试试上面的代码能否工作,如果没有发送成功,请考虑重新配置邮件服务器的smtp服务。好了,按照上述形式发送的邮件将只是简单的文本形式,如果希望发送一个HTML形式的邮件,就需要知道如何发送MIME形式的邮件了。
  2. MIME邮件发送 MIME(Multi-purpose Internet Mail
    Extensions,多用途Internet邮件扩展)
    协议扩展了基于文本的Internet邮件系统,以便可以在消息体中包含二进制附件。MIME信息由正常的Internet文本邮件组成,在文本邮件中包含了一些信息头和格式化过的信息体,这些MIME信息头给出了在邮件中表示附件的特定方法。
    刚才通过mail函数发送的邮件接受之后的MIME信息如下: [code] Received:
    from localhost (localhost [127.0.0.1]) by mx01.263.net (Postfix) with
    SMTP id E7C8B1DC38A78 for ywg_263@263.net; Sat, 8 Dec 2001 20:08:45
    +0800 (CST) Received: by birdy.dhs.org (Postfix, from userid 48) id
    706F3C4923A; Sun, 9 Dec 2001 03:52:26 +0800 (CST) T ywg_263@263.net
    Subject: message from php

PHP mail() 函数

PHP mail() 函数用于从脚本中发送电子邮件。

语法

mail(to,subject,message,headers,parameters)

 

参数 描述
to 必需。规定 email 接收者。
subject 必需。规定 email 的主题。注释:该参数不能包含任何新行字符。
message 必需。定义要发送的消息。应使用 LF (n) 来分隔各行。每行应该限制在 70 个字符内。
headers 可选。规定附加的标题,比如 From、Cc 和 Bcc。应当使用 CRLF (rn) 分隔附加的标题。
parameters 可选。对邮件发送程序规定额外的参数。

注释:PHP
需要一个已安装且正在运行的邮件系统,以便使邮件函数可用。所用的程序通过在
php.ini 文件中的配置设置进行定义。请在我们的 PHP Mail
参考手册 阅读更多内容。


PHP 简易 E-Mail

通过 PHP 发送电子邮件的最简单的方式是发送一封文本 email。

在下面的实例中,我们首先声明变量($to, $subject, $message, $from,
$headers),然后我们在 mail() 函数中使用这些变量来发送了一封 e-mail:

<?php
$to = “someone@example.com”;
$subject = “Test mail”;
$message = “Hello! This is a simple email message.”;
$from = “someonelse@example.com”;
$headers = “From:” . $from;
mail($to,$subject,$message,$headers);
echo “Mail Sent.”;
?>

 


PHP Mail 表单

通过 PHP,您能够在自己的站点制作一个反馈表单。下面的实例向指定的 e-mail
地址发送了一条文本消息:

<html>
<body>

<?php
if (isset($_REQUEST[’email’]))
//if “email” is filled out, send email
{
//send email
$email = $_REQUEST[’email’] ;
$subject = $_REQUEST[‘subject’] ;
$message = $_REQUEST[‘message’] ;
mail(“someone@example.com”, $subject,
$message, “From:” . $email);
echo “Thank you for using our mail form”;
}
else
//if “email” is not filled out, display the form
{
echo “<form method=’post’ action=’mailform.php’>
Email: <input name=’email’ type=’text’><br>
Subject: <input name=’subject’ type=’text’><br>
Message:<br>
<textarea name=’message’ rows=’15’ cols=’40’>
</textarea><br>
<input type=’submit’>
</form>”;
}
?>

</body>
</html>

实例解释:

  • 首先,检查是否填写了邮件输入框

  • 如果未填写(比如在页面被首次访问时),输出 HTML 表单

  • 如果已填写(在表单被填写后),从表单发送电子邮件

  • 当填写完表单点击提交按钮后,页面重新载入,可以看到邮件输入被重置,同时显示邮件发送成功的消息

注释:这个简易发送 e-mail
不安全,在本教程的下一章中,您将阅读到更多关于电子邮件脚本中的安全隐患,我们将为您讲解如何验证用户输入使它更安全。

发表评论

电子邮件地址不会被公开。 必填项已用*标注