gpt4 book ai didi

perl - 通过 SSL 使用 Perl 发送电子邮件

转载 作者:太空宇宙 更新时间:2023-11-03 13:13:31 24 4
gpt4 key购买 nike

我正在尝试通过 SSL 使用 Perl 发送电子邮件。根据示例,我遇到的最好的包是 Net::SMTP::SSL。这似乎是标准。不幸的是,构造函数总是为我返回 undef:

my $smtp = Net::SMTP::SSL->new('smtp.server.com', Port => 25, Debug => 1);

我已经使用 .NET 应用程序验证、重新验证并重新验证了服务器名称和端口号,该应用程序的功能基本相同。 .NET 应用程序一切正常,所以我看不出有任何理由连接到 smtp 服务器时出现问题。

如果模块能够提供某种调试信息,那将会非常有帮助,但是 $! 会变成空白。是否有任何解释为什么 $smtp 变量会出现未定义?或者有什么方法可以从构造函数调用中找到一些有用的调试信息?

编辑:是的,我知道端口 25 是用于 SSL 的奇怪端口。我不知道为什么选择这个端口,但这是正在使用的端口。不幸的是,我受时间限制,与尝试调试 cpan 模块相比,使用另一种技术解决这个问题对我来说更容易。感谢大家的帮助。

最佳答案

Net::SMTP::SSL使用 Net::SMTP做它的工作。在看source对于 new 子中的 Net::SMTP,undef 会针对许多错误情况返回。首先,您可以在调试器中单步执行此函数调用,或手动在其代码中散布打印语句,以查看它在退出之前达到了多远。

此外,检查您是否有 IO::Socket::SSL安装 - 这用于网络操作。如果你使用 cpan 客户端安装你的模块,你应该有它,但其他包管理器如 rpm 有时会搞砸依赖链。

我还会仔细检查您的端口是否正确:Net::SMTP::SSL 的文档说:

Due to the nature of Net::SMTP's new method, it is not overridden to make use of a default port for the SMTPS service. Perhaps future versions will be smart like that. Port 465 is usually what you want, and it's not a pain to specify that.

关于perl - 通过 SSL 使用 Perl 发送电子邮件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5329362/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com