使用Perl发送电子邮件时未安装sendmail且没有任何邮件模块

时间:2011-01-31 18:03:19

标签: perl email sendmail send

我正在建立一个露营网站,我需要发送一封来自Perl的电子邮件。但是,服务器上未安装sendmail,这些是唯一安装的Perl模块:

  • 类::访问器
  • 配置::微小
  • 数学::计算值::单位
  • Nagios的::插件
  • PARAMS ::验证
  • Perl 5.8.8
  • TIMEDATE

还有办法从Perl脚本发送电子邮件吗?


我已经打电话给网站主办公司,但似乎他们甚至都不知道Perl是什么。更别说sendmail了。这称自己是一家虚拟主机公司。

5 个答案:

答案 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模块的许可是否允许您这样做。