21.2.3 发送邮件的表单及程序实现
有了可以发送电子邮件的PHP类之后,最后制作一个发送邮件的简易界面和执行发送的PHP程序。
(1)发送电子邮件的用户界面使用HTML编写,可以参考如下所示的代码21-3。
代码21-3 发送邮件的用户界面user.html
01 <html>
02 <head>
03 <meta http-equiv="Content-Type"content="text/html;charset=gb2312"/>
04 <title>使用PHP发送电子邮件</title>
05 <style type="text/css">
06 <!--
07 .STYLE1{font-size:12px}
08 .STYLE2{
09 font-size:24px;
10 font-weight:bold;
11 }
12 -->
13 </style>
14 </head>
15
16 <body>
17 <p align="center"class="STYLE2">使用PHP发电子邮件</p>
18 <form name="form1"method="post"action="send_mail.php">
19 <table width="444"height="347"border="0"align="center">
20 <tr>
21 <td width="71"height="23"bgcolor="#D6B1E9">
22 <div align="right"class="STYLE1">
23 <div align="left"> 收件人</div>
24 </div>
25 </td>
26 <td width="363">
27 <label> <input type="text"name="sendto"></label>
28 </td>
29 </tr>
30 <tr>
31 <td height="27"bgcolor="#D6B1E9">
32 <div align="right"class="STYLE1">
33 <div align="left"> 邮件标题</div>
34 </div></td>
35 <td>
36 <label> <input type="text"name="subject"></label>
37 </td>
38 </tr>
39 <tr>
40 <td height="23"colspan="2"bgcolor="#D6B1E9">
41 <div align="right"class="STYLE1">
42 <div align="left"> 邮件正文</div>
43 </div>
44 </td>
45 </tr>
46 <tr>
47 <td colspan="2"bgcolor="#D6B1E9">
48 <div align="right">
49 <label>
50 <div align="left">
51 <textarea name="emailcontent"cols="60"rows="18"></textarea>
52 </div>
53 </label>
54 </div>
55 <div align="right"></div>
56 <div align="right"></div>
57 </td>
58 </tr>
59 <tr>
60 <td colspan="2">
61 <label><input type="submit"name="Submit"value="提交"></label>
62 </td>
63 </tr>
64 </table>
65 </form>
66
67 </body>
68 </html>
【代码解析】这是一个常见的邮件发送界面,包含收件人、标题和邮件内容。这里使用了<table>标签实现界面对齐。
(2)该HTML页面会将收件人、邮件标题等信息,提交至程序send_mail.php做处理。该页面显示效果如图21-2所示。
(3)接下来完成发送电子邮件的PHP程序,该程序将使用21.2.1小节创建的smtp_mail类,完成发送邮件的功能。这个程序并不复杂,只需对上小节编写的testmail.php稍作修改即可,如代码21-4所示。
代码21-4 发送邮件的程序send_mail.php
01 <?php
02 include"mail.php";//将指定的文件包含进来
03
04 if(isset($_POST['sendto']))//判断收信人
05 $sendto=$_POST['sendto'];
06 else
07 $sendto='';
08
09 if(isset($_POST['subject']))//判断主题
10 $subject=$_POST['subject'];
11 else
12 $subject='';
13
14 if(isset($_POST['emailcontent']))//判断邮件内容
15 $emailcontent=$_POST['emailcontent'];
16 else
17 $emailcontent='';
18
19 if(empty($sendto)||empty($subject)||empty($emailcontent))
20 {
21 echo'<b>请填写收件人email地址、邮件主题和邮件正文。</b><br/>';
22 exit;
23 }
24
25 $sendmail=new smtp_mail("smtp.sina.com","sina",false);
26 if($sendmail->send("macbooks@sina.com",$sendto,$subject,$emailcontent))//发信
27 {
28 echo"发送成功!";
29 }
30 else
31 {
32 echo"发送失败!";
33 }
34 ?>
【代码解析】程序send_mail.php通过使用类smtp_mail完成邮件的发送。代码第26行发送邮件所使用的邮件地址是个例子,读者需要根据实际情况加以替换。