Perl 如何实现侦听新邮件然后执行操作的脚本

Perl 如何实现侦听新邮件然后执行操作的脚本,perl,email,james,Perl,Email,James,我有一个ApacheJames邮件服务器设置,我想创建一个脚本,该脚本将侦听新邮件,然后与星号服务器通信,以拨打用户电话号码并读取邮件。我认为这是可能的,但找不到任何信息。我一直在为其他任务使用perl脚本,所以如果我能用perl实现这一点,那就太好了 提前感谢一个解决方案是设置一个cron作业来运行一个perl脚本,该脚本使用类似于Mail::POP3Client的内容来检查新消息,并使用(可能)Asterisk::AGI向Asterisk发送内容。如果CPAN模块不能满足您的需要,您可以始终

我有一个ApacheJames邮件服务器设置,我想创建一个脚本,该脚本将侦听新邮件,然后与星号服务器通信,以拨打用户电话号码并读取邮件。我认为这是可能的,但找不到任何信息。我一直在为其他任务使用perl脚本,所以如果我能用perl实现这一点,那就太好了

提前感谢

一个解决方案是设置一个cron作业来运行一个perl脚本,该脚本使用类似于
Mail::POP3Client
的内容来检查新消息,并使用(可能)
Asterisk::AGI
向Asterisk发送内容。如果CPAN模块不能满足您的需要,您可以始终让perl脚本执行
系统
调用,以与能够检查POP或与Asterisk交互的命令行工具交互。

您可以用来轮询邮箱中的消息。或者,如果邮箱支持IMAP,并且您希望持续监视它,那么可以使用IMAP模块吗

我只是在谷歌上搜索[Asterisk Perl],并出现在第一页。它描述了如何使用模块使用Perl连接到Asterisk服务器


最后,您需要一个文本到语音的应用程序。我肯定有很多这样的。它们可能不会用Perl编写,但可能存在用于它们的Perl接口。

我想最好的方法是用java编写一个,并将其置于配置中,使其能够侦听根处理器中的所有邮件

步骤如下所示:

  • 写邮件,即:

    import org.apache.mailet.*;
    public class myMailet extends GenericMailet {
      private String aParameter;
      @Override
      public void init(MailetConfig cfg) throws MessagingException {
        super.init(cfg);
        aParameter = getInitParameter("myNeatParameter"); // use this if you need to use some parameters specified inside the mailetcontainer.xml
      }
    
      @Override
      public void service(Mail email) throws MessagingException {
        doYourThingWith(email);
      }
    
      private void doYourThingWith(Mail email){
        // TODO something with the email
      }
    }
    
  • 将邮件集构建到jar文件中

  • 将生成的jar文件添加到/conf/lib文件夹

  • 编辑/conf/mailetcontainer.xml文件,在其中添加以下内容:

    <mailet match="All" class="myMailet">
        <myNeatParameter>some value</myNeatParameter>
    </mailet>
    
    
    一些价值
    
    作为根处理器的子元素(或您认为合适的任何元素)

  • 重新启动詹姆斯

  • 这不是一个脚本,但它是非常好的(即使不是最好的)解决方案