在UNIX环境下,CGI程序发EMAIL都是用sendmail, 在Windows95/98,NT没有sendmail,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朋友(zeng_h@mail.hb.cnpc.com.cn)给我来信说他发现在SAMBAR 4.1中的BIN目录下有个MAILIT.EXE文件,其功能与BLAT.EXE相同,而且不用先安装.
2.采用Perl模块Net::SMTP
系统必须支持SMTP协议,NT中可安装Exchange Server
use Net::SMTP;
{
my = 'preston@home.com';
my = { USER} || { USERNAME};
my = "Another test";
my = Net::SMTP->new('mail');
->mail();
->to();
->data();
->datasend("To: \n");
->datasend("From: \n");
->datasend("Subject: \n");
->datasend("X-MyToken: ABCD\n");
->datasend("\n");
->datasend("A simple test message\n");
->dataend() || print "FAILED send!\n";
->quit;
}
print "\nMAIL sent OK\n";
-----
注意"{ USER}"是Unix中用的,而{ USERNAME}"是Windows NT中用的
3.用Outlook发邮件
下面的程序在Perl for Win32 (build 316)正常运行过
# Sender's Name and Password
#
my = "Microsoft Outlook"; # profile to be used
my = "MS Exhange Settings Password"; #profile password
# Create a new MAPI Session
#
use OLE;
= CreateObject OLE 'MAPI.Session' || die $!;
my = ->Logon(, );
if () {
die "Logon failed: $!";
}
# Add a new message to the Outbox.
#
= ->Outbox->Messages->Add();
# Add the recipient.
#
= ->Recipients->Add();
->{ Name} = 'recepient@host.org'; # email address of recepient
->Resolve();
# Create a subject and a body.
#
->{ Subject} = "Test Message";
->{ Text} =
"This is a sample test message. Using NT 4.0.
Cheers,
Mr. Email";
# Send the message and log off.
#
->Update();
->Send(0, 0, 0);
->Logoff();
发送附件和拷贝也可以
='user@host.com';
='c:/attach.doc'
="MS Exchange Settings";#profile name
="HELLO";
="MS Exhange Settings Password";#profile password
='TEST';
system("mapisend -u \"\" -p \"\" -f \"\" -s
\"\" -r -m \"\"")