Perl 电子邮件脚本在IIS上不起作用

Perl 电子邮件脚本在IIS上不起作用,perl,iis,Perl,Iis,我有以下测试脚本发送电子邮件: use strict; use Net::SMTP; print "Content-Type: text/plain\n\n"; print "Sending email...\n"; my $smtp = Net::SMTP->new('10.0.0.1', Port => 25, Timeout => 10, Debug => 1); $smtp->mail("user1\@domain.local"); $smtp->

我有以下测试脚本发送电子邮件:

use strict;
use Net::SMTP;

print "Content-Type: text/plain\n\n";
print "Sending email...\n";

my $smtp = Net::SMTP->new('10.0.0.1', Port => 25, Timeout => 10, Debug => 1);
$smtp->mail("user1\@domain.local");
$smtp->to("user2\@domain.local");
$smtp->data();
$smtp->datasend("From: user1\@domain.local\n");
$smtp->datasend("To: user2\@domain.local\n");
$smtp->datasend("Subject: Test\n\n");
$smtp->datasend("Testing 1 2 3\n");
$smtp->datasend();
$smtp->quit;
当我从命令行运行它时,它工作得很好,我立即收到电子邮件。但是,当我把它放在
C:\inetpub\wwwroot
中并从web浏览器运行它时,我得到了
发送电子邮件…
文本,但什么也没有。不发送电子邮件,不显示错误消息。我查看了邮件服务器日志,甚至没有建立连接。我不知道为什么它是从cmd工作,但不是从IIS。脚本通过IIS执行此操作是否需要一些额外的配置


我还尝试了
sendmail()
,得到了类似的结果。

首先,将以下标题添加到文件中

use strict 'vars';
use warnings;
use diagnostics;
use feature qw/say/;
use CGI::Carp qw(warningsToBrowser fatalsToBrowser);

... your code...

# Print Warnings
warningsToBrowser(1);
这将给你更多的信息,如果它失败或抛出一个警告的东西


其次,您是如何安装Net::SMTP的?确保它和它的所有依赖项都具有IIS工作进程的权限。

我在您提供的代码中遇到的错误是
无法在C:\inetpub\wwwroot\test.pl第14行的未定义值上调用方法“mail”。
如果
Net::SMTP->new
调用失败,我会想到这一点。但它仍然没有告诉我为什么失败。至于工作进程中的权限,我不知道你的意思。在默认IIS安装中,它是一个简单的Perl脚本,那么我应该在哪里查找它呢?看看在IIS上运行Perl@如果这太复杂,您可以从下载Net::SMTP的源代码-复制与CGI相关的bin文件夹,并使用
use File::Basename;使用lib dirname(_文件__)。'/宾'当我将vdir凭据更改为具有管理员组权限的用户时,我成功地使其工作。我不确定这是否是它的原因,也不确定为什么它在作为IUSR之前没有其他详细信息的情况下失败。似乎该模块或它的某个依赖项是在没有正确凭据的情况下安装的,并且是在没有IUSR所需权限的情况下安装的。