返回列表 回复 发帖

[转帖]怎样用perl编cgi发email

#!usr/bin/perl
#
#这是一个CGI程序,用语将表单中的内容发送到指定信箱.
#表单有两项内容其一为信箱地址"email",其二为内容"content"
read(STDIN,$buffer,$ENV{'CONTENT_LENGTH'});

   #把html的输入读如到$buffer中,注意这时的#$buffer是一个长字符串

   #CGI程序是使用STDIN和STDOUT输入输出

   @pairs=split(/&/,$buffer);

   foreach $pair(@pairs){

   ($name,$value)=split(/=/,$pair);

   #把pairs拆分成不同输入框名字和输入内容的关联数组

   $value=~s/\+/ /g;

   #注意CGI把所有的输入空格转换成+,所以要变换回来
   $value=~s/%([a-fA-F0-9][a-fA-F0-9])/pack("C",hex($1))/eg;
   #CGI把中文全部变成16进制编码,所以要用pack转换回来

   $FORM{$name}=$value;

   }
$mailbox=$FORM{"email"};
$mailcontent=$FORM{"content"};
open (MAIL,"|mail $mailbox");
print MAIL $mailcontent;
close(MAIL);

#本程序在Unix(Linux)服务器上成功运行.
#呵呵,很简陋的一个东东,可以做许多补充
#qxb 2000/04/16

                     我是一个呼吸着现在的空气而生活在过去的人
               这样的注定孤独,孤独的身处闹市却犹如置身于荒漠
                                     我已习惯了孤独,爱上孤独
                                 他让我看清了自我,还原了自我
                             让我再静静的沉思中得到快乐和满足
                                   再孤独的世界里我一遍又一遍
                                   不厌其烦的改写着自己的过去
                                             延伸到现在与未来
                                       然而那只是泡沫般的美梦
                                 产生的时刻又伴随着破灭的到来
                         在灰飞烟灭的瞬间我看到的是过程的美丽
                                      而不是结果的悲哀。。。

[转帖]怎样用perl编cgi发email

具体补充一下:
  1. #!/usr/bin/perl
  2. # 请将下面邮箱改为您要接收反馈意见的邮箱,\@不要改动。
  3. $user_email = "你的邮箱\@后缀";
  4. $dd = `date`; chop $dd;
  5. $method = $ENV{"REQUEST_METHOD"};
  6. $type = $ENV{"CONTENT_TYPE"};
  7. $remoteip = $ENV{"REMOTE_ADDR"};
  8. if ($method ne "POST" || $type ne "application/x-www-form-urlencoded")
  9. {
  10.    print "Location: http://当提交的时候返回的页面\n\n";
  11.    exit;
  12. }
  13. %input_values = &break_input;
  14. $email     = &normalize_query($input_values{"EMAIL"});
  15. $message   = &normalize_query($input_values{"MESSAGE"});
  16. if ($message eq "") {
  17.    $error_msg = "您没有留下意见!<BR>请按返回键再试一次!";
  18.    exit &print_error();
  19. }
  20. if ($email eq "") {
  21.    $error_msg = "您没有提供e-mail地址,<BR>请填好您的e-mail地址再试一次!";
  22.    exit &print_error();
  23. }
  24. open(M,"|/usr/sbin/sendmail $user_email");
  25. # 用的open语法打开邮件管道/usr/sbin/sendmail,所以nt和os一般不行
  26. print M <<EOFX;
  27. From: $email
  28. To: $user_email
  29. Subject: 意见反馈
  30. Date:    $dd
  31. E-mail:  $email
  32. IP:      $remoteip
  33. Message:  
  34. $message
  35. EOFX
  36.             
  37. close (M);
  38. $error_msg = "感谢您对我们提出的建议";
  39. &print_error();
  40. #####################
  41. # SUB-ROUTINES
  42. #####################
  43. sub break_input {
  44.     local ($i);
  45.     read(STDIN, $input, $ENV{'CONTENT_LENGTH'});
  46.     @form_names = split('&', $input);
  47.     foreach $i (@form_names) {
  48.         ($html_name, $html_value) = split('=', $i);
  49.         $input_values{$html_name} = $html_value;
  50.     }
  51.     return %input_values;
  52. }
  53. sub normalize_query {
  54.     local($value) = @_;
  55.     $value =~ tr/+/ /;
  56.     $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
  57.     return $value;
  58. }
  59. sub print_error {
  60. print <<EOP;
  61. Content-type: text/html
  62. <html>
  63. <head>
  64. <title>message</title>
  65. <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
  66. <style type="text/css">
  67. <!--
  68. .main {font-size: 12px}
  69. .main1{ font-size: 14.8px }
  70. .main2{ font-size: 16px }
  71. .main4{font-size: 10px}
  72. A:link {color: #333333; font-style: normal; text-decoration: underline}
  73. A:visited {color: #333333; font-style: normal; text-decoration: underline}
  74. A:active {color:  #999999; font-style: normal; text-decoration: none}
  75. A:hover {color:   #999999; font-style:bold; text-decoration: none}   
  76. -->
  77. </style>
  78. </head>
  79. <body bgcolor="#FFFFFF" text="#666666" leftmargin="0" topmargin="0">
  80. <table width="100%" border="0" height="100%" cellpadding="0" cellspacing="0">
  81.   <tr>
  82.     <td>
  83.       <table width="500" border="0" cellpadding="0" cellspacing="0" bgcolor="#C6C6C6" align="center">
  84.         <tr>
  85.           <td>
  86.             <table width="100%" border="0" cellspacing="1" cellpadding="0">
  87.               <tr>
  88.                 <td bgcolor="#F8F8F8">
  89.                   <table width="100%" border="0">
  90.                     <tr>
  91.                       <td bgcolor="#e6e6e6">
  92.                         <div align="center" class="main2"><b>message</b></div>
  93.                       </td>
  94.                     </tr>
  95.                     <tr>
  96.                       <td height="20"></td>
  97.                     </tr>
  98.                     <tr>
  99.                       <td>
  100.                         <div align="center" class="main">$error_msg</div>
  101.                       </td>
  102.                     </tr>
  103.                     <tr>
  104.                       <td height="20"></td>
  105.                     </tr>
  106.                   </table>
  107.                 </td>
  108.               </tr>
  109.             </table>
  110.           </td>
  111.         </tr>
  112.       </table>
  113.       
  114.       <div align="center"><br>
  115.         <input style='BORDER-RIGHT: #C6C6C6 1px solid; BORDER-TOP: #C6C6C6 1px solid; FONT-SIZE: 12px; BORDER-LEFT: #C6C6C6 1px solid; COLOR: #666666; BORDER-BOTTOM: #C6C6C6 1px solid; FONT-FAMILY: "宋体","Arial", "Helvetica", "sans-serif"; BACKGROUND-COLOR: #F8F8F8' type="button" value=" 返回 " onClick="javascript:history.back()" name="button">
  116.       </div>
  117.     </td>
  118.   </tr>
  119. </table>
  120. </body>
  121. </html>
  122. EOP
  123. }
复制代码

[转帖]怎样用perl编cgi发email

nt的是这样的
  1. #!/usr/bin/perl
  2. use Net::SMTP;
  3. $smtp=Net::SMTP->new("localhost");
  4. $smtp->mail("root");
  5. $smtp->to("bbs\@bbs.mit.edu");
  6. $smtp->data();
  7. $smtp->datasend("To: bbs\n\n");
  8. $smtp->datasend("#name: midi\n");
  9. $smtp->datasend("#password: abc12345\n");
  10. $smtp->datasend("#board: PERL\n");
  11. $smtp->datasend("#title: 灌水\n\n");
  12. #do whatever you want....your body here:-)
  13. $smtp->dataend();
  14. $smtp->quit();
复制代码
返回列表