Username: Password:

cgi中的邮件发送器
来源:linux宝库作者:linux宝库 发布时间:2007-09-30 00:00:00


  

  

  

  

  

  

  

  

  


  #!/usr/bin/perl

  #以二进制模式传送附件。

  binmode(STDIN);

  binmode(STDOUT);

  binmode(STDERR);

  #sender.pm模块位置

  $ProgDir="c:\\httpd\\htdocs\\cgi-bin\\clmail";

  #附件目录

  $AttachDir="c:\\worktemp\";

  #发信按钮图像

  $MailButton=’http://127.0.0.1/mailimage/mail_b.JPG’;

  #附件按钮图像

  $AttachButton=’http://127.0.0.1/mailimage/attach_b.JPG’;

  #页面标题

  $title="免费邮件";

  #SMTP服务器

  $SmtpSever=’192.192.194.1’; #这是个虚构的服务器,请使用您的发信服务器代替他。

  #ShowAttachForm();

  #sender模块位置

  push(@INC,$ProgDir);

  my($From,$To,$Subject,$Cc,$Bcc,$AttachFile,$MailContent,$AttachNum,$AttachFile1,$AttachFile2,$AttachFile3);

  use CGI;

  $input=new CGI;

  if($input->param(’attachbutton.x’) ne ""){

  &ReadInput;

  ShowAttachForm($From,$To,$Subject,$Cc,$Bcc,$AttachFile,$MailContent,$AttachNum,$AttachFile1,$AttachFile2,$AttachFile3,0);

  }

  #($ENV{’QUERY_STRING’} eq ’showattach’) and &ShowAttachForm;

  #&ShowAttachForm;

  if($input->param(’showmailform’) eq ’yes’)

  {

  &ShowMailForm;

  exit;

  }

  if($input->param(’beattachfile’) eq ’yes’){

  &AttachFile;

  exit;

  }

  if ( $input->param(’mailbutton.x’) ne ’’ ) {

  #&ReadInput;

  &SendMail;

  exit;

  }

  &ShowMailForm;

  sub print_head{

  print<<"EOF";

  content-type:text/html\n

  $title

  

  EOF

  }

  sub print_foot{

  print<<"EOF";

  

  

  EOF

  }

  ############################################################################

  sub ShowAttachForm #4/14/00 4:02PM

  ############################################################################

  {

  my ($From,$To,$Subject,$Cc,$Bcc,$AttachFile,$MailContent,$AttachNum,$AttachFile1,$AttachFile2,$AttachFile3,$TooMany)=@_;

  &print_head;

  if ($TooMany eq 1) {

  print<<"EOF";

  

对不起,附件不能超过3个,本附件不能传送。



  EOF

  }

  print<<"EOF";

  

按以下步骤发送附件:



  

  ENCTYPE="multipart/form-data">

  
  value="$From">
  name="subject" value="$Subject">
  type="hidden" name="cc" value="$Cc">
  type="hidden" name="mailcontent" value="$MailContent">
  name="attachnum" value="$AttachNum">
  value="$AttachFile1">
  type="hidden" name="attachfile3" value="$AttachFile3">
  width="57%" height="76" style="font-size: 9pt; letter-spacing: 2px">

  

  

  

  

  

  

  

  

  

  
1、在以下框中点击“浏览”并在随后弹出的对话框中选择附件。
2、点击“粘贴”键,将附件贴到邮件上。
  type="submit" value="粘贴">


  

  


  
  value="$From">
  name="subject" value="$Subject">
  type="hidden" name="cc" value="$Cc">
  type="hidden" name="mailcontent" value="$MailContent">
  name="attachnum" value="$AttachNum">
  value="$AttachFile1">
  type="hidden" name="attachfile3" value="$AttachFile3">
  style="font-size: 9pt; letter-spacing: 2px" width="435" cellspacing="0" cellpadding="0">

  
3、如有多个附件,重复以上步骤。
4、点击“完成”,以完成附件操作。
  type="submit" value="完成">
附件列表:


  name="fj" size="3">

  

  

  

  



  

  EOF

  &print_foot;

  exit;

  } ##ShowAttachForm

  ############################################################################

  sub ReadInput #4/14/00 2:34PM

  ############################################################################

  {

  $From= $input->param(’from’);

  $To=$input->param(’to’);

  $Subject=$input->param(’subject’);

  $Cc=$input->param(’cc’);

  $Bcc=$input->param(’bcc’);

  $AttachFile=$input->param(’attachfile’);

  $MailContent=$input->param(’mailcontent’);

  $AttachNum=$input->param(’attachnum’);

  $NewFile=$input->param(’newfile’);

  $AttachFile1=$input->param(’attachfile1’);

  $AttachFile2=$input->param(’attachfile2’);

  $AttachFile3=$input->param(’attachfile3’);

  } ##ReadInput

  ############################################################################

  sub SendMail #4/13/00 10:14AM

  ############################################################################

  {

  &ReadInput;

  #读入附件信息

  if($AttachNum ne ""){ @AttachFileName=split(/;/,$AttachFile);}

  use Sender;

  $Send = new Sender({from=>$From,

  smtp=>$SmtpSever});

  if ( !( ref $Sender) =~ /Sender/i ) {

  die $Sender::Error;

  }

  $Send->OpenMultipart({to=>$To,

  subject=>$Subject,

  replyaddr=>$Cc});

  $Send->Body;

  $Send->SendLine($MailContent);

  if ($AttachNum ne "") {

  for ( $i=1; $i<=$AttachNum; $i++) {

  $Send->SendFile({description=>’邮件附件’,

  encoding=>’Base64’,

  disposition=>"attachment;filename=$AttachFileName[$i-1]",

  file=>"$AttachDir$AttachFileName[$i-1]"});

  }

  }

  $Send->Close;

  #&print_head;

  #print<<"EOF";

  #$From,$To,$Subject,$Cc,$Bcc,$AttachFile,$MailContent,$AttachNum,$SmtpSever

  #EOF

  #&print_foot;

  if ($Send->{’error’} <0 ) {

  mail_error(’i’,$Send->{’error’});

  }

  &ShowMailSuccess;

  }

  sub mail_error #3/24/00 4:24PM

  {

  my ($user,$errorCode)=@_;

  &print_head;

  ($errorCode eq -1) and print "SMTP错误代码:-1";

  ($errorCode eq -2) and print "SMTP错误代码:-2";

  ($errorCode eq -3) and print "SMTP错误代码:-3";

  ($errorCode eq -4) and print "SMTP错误代码:-4";

  ($errorCode eq -5) and print "SMTP错误代码:-5";

  ($errorCode eq -6) and print "SMTP错误代码:-6";

  ($errorCode eq -7) and print "SMTP错误代码:-7";

  ($errorCode eq -8) and print "SMTP错误代码:-8";

  ($errorCode eq -9) and print "SMTP错误代码:-9";

  ($errorCode eq -10) and print "SMTP错误代码:-10";

  ($errorCode eq -11) and print "SMTP错误代码:-11";

  ($errorCode eq -12) and print "SMTP错误代码:-12";

  &print_foot;

  exit;

  }

  ############################################################################

  sub ShowMailSuccess #4/15/00 7:46PM

  ############################################################################

  {

  &print_head;

  print<<"EOF";

  成功发信

  EOF

  &print_foot;

  exit;

  } ##ShowMailSuccess

  ############################################################################

  sub AttachFile #4/13/00 4:04PM

  ############################################################################

  {

  &ReadInput;

  ($AttachNum >= 3) and (ShowAttachForm($From,$To,$Subject,$Cc,$Bcc,$AttachFile,$MailContent,$AttachNum,$AttachFile1,$AttachFile2,$AttachFile3,1));

  my $AbsName = $NewFile;

  $AbsName =~ s!^.*(\\|\/)!!;

  open (FILE, ">$AttachDir$AbsName");

  binmode(FILE);

  while (my $bytesread = read($NewFile, my $buffer, 1024)) {

  print FILE $buffer;

  }

  close (FILE);

  $AttachFile .= $AbsName.’;’;

  $AttachNum += 1;

  if ($AttachNum eq 1) {$AttachFile1=$AbsName;}

  if ($AttachNum eq 2) {$AttachFile2=$AbsName;}

  if ($AttachNum eq 3) {$AttachFile3=$AbsName;}

  ShowAttachForm($From,$To,$Subject,$Cc,$Bcc,$AttachFile,$MailContent,$AttachNum,$AttachFile1,$AttachFile2,$AttachFile3,0);

  }

  ############################################################################

  sub ShowMailForm #4/13/00 4:50PM

  ############################################################################

  {

  #my ($From,$To,$Subject,$Cc,$Bcc,$AttachFile,$MailContent,$AttachNum) = @_;

  &ReadInput;

  &print_head;

  print<<"EOF";

  


  
  value="$AttachFile1">
  type="hidden" name="attachfile3" value="$AttachFile3">

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  
发信人:
收件人:
主题:
抄送:
暗送:
附件:
  size="38">


  

  src="$MailButton" type="image" >
  src="$AttachButton" type="image" >

  
邮件正文:


  

  EOF

  &print_foot;

  } ##ShowMailForm

喜欢本文,那就收藏到:

    Del.icio.us Google书签 Digg Live Bookmark Technorati Furl Yahoo书签 Facebook 百度搜藏 新浪ViVi 365Key网摘 天极网摘 和讯网摘 博拉网 POCO网摘 添加到饭否 QQ书签 Digbuzz我挖网
相关评论  我也要评论
还没有关于此文章的相关评论!
  • 昵称: (为空则显示guest)
  • 评论分数: ★ ★ ★★★ ★★★★ ★★★★★
  • 评论内容:(不能超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规。
  • 导航
    赞助商
    文章类别
    订阅