发信人: tanshuai() 
整理人: workingnow(2002-10-30 13:57:03), 站内信件
 | 
 
 
在UNIX环境下,CGI程序发EMAIL都是用sendmail, 在Windows95/98,NT没有sendma il,CGI程序如何发邮件呢?其实方法多得很呢!
 
 1.Windows环境下发邮件程序
 
 这类程序很多,如blat,sendmail for windows,cgimail等等,它们的用法和UNIX下 的sendmail极其相似,许多UNIX下CGI程序不用怎么修改就可以在Windows下使用. 
 
 Blat http://www.blat.com (免费)
 Sendmail for NT http://www.sendmail.com (商业软件)
 CgiMail  http://www.stalkerlab.ch/ (免费)
 Sendmail for Windows http://www.green-bean.com/bcware/sendmail.htm (共 享软件)
 
 另外Zeng Hui朋友([email protected])给我来信说他发现在SAMBAR 4 .1中的BIN目录下有个MAILIT.EXE文件,其功能与BLAT.EXE相同,而且不用先安装. 
 
 2.采用Perl模块Net::SMTP
 
 系统必须支持SMTP协议,NT中可安装Exchange Server
 
 use Net::SMTP;
 
 {
 my $to = '[email protected]';
 my $from = $ENV{USER} || $ENV{USERNAME};
 my $subject = "Another test";
 
 my $smtp = Net::SMTP->new('mail');
 
 $smtp->mail($from);
 $smtp->to($to);
 
 $smtp->data();
 $smtp->datasend("To: $to\n");
 $smtp->datasend("From: $from\n");
 $smtp->datasend("Subject: $subject\n");
 $smtp->datasend("X-MyToken: ABCD\n");
 $smtp->datasend("\n");
 $smtp->datasend("A simple test message\n");
 $smtp->dataend() || print "FAILED send!\n";
 
 $smtp->quit;
 }
 
 print "\nMAIL sent OK\n";
 -----
 
 注意"$ENV{USER}"是Unix中用的,而$ENV{USERNAME}"是Windows NT中用的
 
 3.用Outlook发邮件
 
 下面的程序在Perl for Win32 (build 316)正常运行过
 # Sender's Name and Password
 #
 my $sender = "Microsoft Outlook"; # profile to be used
 my $passwd = "MS Exhange Settings Password"; #profile password
 
 # Create a new MAPI Session
 #
 use OLE;
 $session = CreateObject OLE 'MAPI.Session' || die $!;
 
 my $err = $session->Logon($sender, $passwd);
 if ($err) {
 die "Logon failed: $!";
 }
 
 # Add a new message to the Outbox.
 #
 $msg = $session->Outbox->Messages->Add();
 
 # Add the recipient.
 #
 $rcpt = $msg->Recipients->Add();
 $rcpt->{Name} = '[email protected]'; # email address of recepient
 $rcpt->Resolve();
 
 # Create a subject and a body.
 #
 $msg->{Subject} = "Test Message";
 $msg->{Text} =
 "This is a sample test message. Using NT 4.0.
 
 Cheers, 
 
 Mr. Email";
 
 # Send the message and log off.
 #
 $msg->Update();
 $msg->Send(0, 0, 0);
 $session->Logoff();
 
 
 发送附件和拷贝也可以
 
 $recipient='[email protected]'; 
 $attachment='c:/attach.doc'
 $profile="MS Exchange Settings";#profile name
 $mailmeessage="HELLO";
 $password="MS Exhange Settings Password";#profile password
 $subject='TEST';
 
 system("mapisend -u \"$profile\" -p \"$password\" -f \"$attachment\" - s
 \"$subject\" -r $recipient -m \"$mailmessage\"")
 
  -- ※ 来源:.月光软件站 http://www.moon-soft.com.[FROM: 202.103.155.100]
  | 
 
 
 |