星星博客's Archiver

cnangel 发表于 2005-8-25 19:04

Windows9598,NT下如何发EMAIL

[color=red]作者:小歪歪
email: [email]annysun@163.net[/email]
日期:2000-9-1 15:38:46[/color]
在UNIX环境下,CGI程序发EMAIL都是用sendmail, 在Windows95/98,NT没有sendmail,CGI程序如何发邮件呢?其实方法多得很呢!
1.Windows环境下发邮件程序
这类程序很多,如blat,sendmail for windows,cgimail等等,它们的用法和UNIX下的sendmail极其相似,许多UNIX下CGI程序不用怎么修改就可以在Windows下使用.
Blat [url]http://www.blat.com[/url] (免费)
Sendmail for NT [url]http://www.sendmail.com[/url] (商业软件)
CgiMail  [url]http://www.stalkerlab.ch/[/url] (免费)
Sendmail for Windows [url]http://www.green-bean.com/bcware/sendmail.htm[/url] (共享软件)
另外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
[code]
use Net::SMTP;
{
my $to = ';preston@home.com';;
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";[/code]
-----
注意"$ENV{USER}"是Unix中用的,而$ENV{USERNAME}"是Windows NT中用的
3.用Outlook发邮件
下面的程序在Perl for Win32 (build 316)正常运行过[code]
# 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} = ';recepient@host.org';; # 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();
[code]
发送附件和拷贝也可以
[code]
$recipient=';user@host.com';;
$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\"")
[/code]

页: [1]

Powered by Discuz! Archiver 7.0.0  © 2001-2009 Comsenz Inc.