我正在建立一个露营网站,我需要发送一封来自Perl的电子邮件。但是,服务器上未安装sendmail
,这些是唯一安装的Perl模块:
还有办法从Perl脚本发送电子邮件吗?
我已经打电话给网站主办公司,但似乎他们甚至都不知道Perl是什么。更别说sendmail
了。这称自己是一家虚拟主机公司。
答案 0 :(得分:13)
这个问题可以更普遍地改写为“我如何在Perl中做一些需要我的系统上没有安装的模块的东西,而且我没有对这个框的root控制权,而且sysadmins不能或者赢了合作?“
在一句话中,最好的答案是“使用local::lib”,但您可以在Matt Trout的博文"But I can't use CPAN!"中阅读更多选项。
答案 1 :(得分:8)
Net :: SMTP是一个核心模块,应该包含在任何Perl安装中。模块文档显示了发送电子邮件的简单示例。使用“perldoc Net :: SMTP”查看它是否存在并查看示例。
答案 2 :(得分:4)
除了明显的答案(“更改你的主机”),当然,你可以用裸perl写一个SMTP客户端。最简单的方法是将Net::SMTP
或者Email::Send
集成到您的perl代码中。 Pure Perl模块不需要任何特殊的安装过程。但是,从头开始编写SMTP客户端也不难。
无论您选择哪种方式,请确保在发生故障后一小时左右插入某种重试方式。否则,您的网站将进入那些无法使用greylisting向任何人发送邮件的网站。
答案 3 :(得分:2)
寻找新的托管公司?或者至少在其他地方托管您的电子邮件表单?
如果您有权访问shell,则应该能够在本地文件夹中安装模块。除非您甚至可以在其他计算机上“安装”纯perl模块,然后通过FTP将生成的模块复制到主机。
至于你应该使用的模块:MIME :: Lite可以使用SMTP发送,因此不需要sendmail。它也都是perl(没有C后端)所以你可能会这样做。
如果以上都不起作用,您可以直接连接到SMTP服务器,但这非常复杂,特别是如果您想发送附件
答案 4 :(得分:1)
如果您无法安装任何其他模块,那么简单的方法是将sendmail模块的代码源集成到您的项目中,但您还必须检查sendmail模块的许可是否允许您这样做。