首页 » PHP和MySQL Web开发(原书第4版) » PHP和MySQL Web开发(原书第4版)全文在线阅读

《PHP和MySQL Web开发(原书第4版)》29.8 发送邮件

关灯直达底部

最后,我们来介绍如何发送邮件。该脚本程序中有多种方法可以完成此操作:用户可以发送一则新的邮件消息,回复或者转发邮件。我们来看看它们是如何工作的。

29.8.1 发送一则新消息

点击"New Message"按钮,用户可以选择发送一则新的邮件消息。这将触发"new-message"操作,该操作将执行index.php/case'New-Message'脚本中的如下代码:

index.php/case'new-message':

display_new_message_form($_SESSION['auth_user'],

$to,$cc,$subject,$body);

break;

新消息表单仅仅是一个供发送邮件用的表单,如图29-8所示。实际上,该图显示的是回复邮件而非新建邮件,但是用到的表单都是相同的。接下来,我们将了解如何转发和回复邮件。

图 29-8 你可以将邮件回复或转发给其他用户

点击"Send Message"按钮将调用"send-message"操作,该操作将执行index.php脚本中的如下代码:

case'send-message':

if(send_message($to,$cc,$subject,$message)){

echo"<p style=/"padding-bottom:100px/">Message sent.</p>";

}else{

echo"<p style=/"padding-bottom:100px/">Could not send message.</p>";

}

以上代码调用了send_message函数,该函数真正执行邮件发送的操作。函数如程序清单29-12所示。

程序清单29-12 mail_fns.php的send_message函数——发送用户键入的消息的函数

function send_message($to,$cc,$subject,$message){

//send one email via PHP

if(!$conn=db_connect){

return false;

}

$query="select address from users where

username='".$_SESSION['auth_user']."'";

$result=$conn->query($query);

if(!$result){

return false;

}else if($result->num_rows==0){

return false;

}else{

$row=$result->fetch_object;

$other='From:'.$row->address;

if(!empty($cc)){

$other.="/r/nCc:$cc";

}

if(mail($to,$subject,$message,$other)){

return true;

}else{

return false;

}

}

}

可以看到,该函数使用了mail函数来发送邮件,但是,首先该函数将从数据库中载入用户的电子邮件地址,并将其设置在待发邮件的From域。