Windows 2012 / StrawberryPerl上的My Net :: SMTP代码正在逐渐淘汰,我认为这是因为Perl正在尝试使用IPv6地址,而我的本地MS SMTP服务器未在IPv6上运行。以下工作,但如果我使用“localhost”或FQDN Net :: SMTP-> new()失败,$ @包含“错误地址”
my $smtp = Net::SMTP->new('127.0.0.1',
Timeout => 30,
Debug => 1,
);
此外,如果我使用远程SMTP服务器的FQDN(Windows 2008 / IMail),它可以工作。
本地和远程服务器仅在端口25上侦听SMTP。
有没有办法在我的脚本中强制使用IPv4?我想过在Windows中禁用IPv6,但我读到不建议这样做。我还可以尝试调试它吗?
答案 0 :(得分:1)
您可以尝试使用Domain => AF_INET}
强制将dns解析为ipv4,即:
my $smtp = Net::SMTP->new('FQDN',
Timeout => 30,
Domain => AF_INET,
Debug => 1,
);
如果未给出“Domain”,则假设AF_UNSPEC,即AF_INET 解析DNS名称时将考虑AF_INET6和AF_INET6。 AF_INET6是优先的。