使用 PHP 脚本处理传入的电子邮件

Posted

技术标签:

【中文标题】使用 PHP 脚本处理传入的电子邮件【英文标题】:Processing incoming e-mail with PHP Script 【发布时间】:2011-04-27 15:37:45 【问题描述】:

所以我试图弄清楚如何将电子邮件发送到某个地址,例如 something@whatever.com,而不是将电子邮件发送到那里,而是将其发送或转发到我创建的脚本读取电子邮件的内容并将内容存储到数据库中。有关如何在 php 中执行此操作的任何建议?

谢谢!

【问题讨论】:

这取决于您的服务器有什么 MTA 以及它是否接受电子邮件。通常,尽管您通过管道将电子邮件发送到您的脚本。脚本本身只是从 STDIN 读取。 【参考方案1】:

这里有一些你可以用来帮助你的代码:

// set user to check
$strUser     = "username";
$strPassword = "password";

// open
$hMail = imap_open ("mail.yourdomain.com:143/notlsINBOX", "$strUser", "$strPassword");

// get headers
$aHeaders = imap_headers( $hMail );

// get message count
$objMail = imap_mailboxmsginfo( $hMail );

// process messages
for( $idxMsg = 1; $idxMsg <= $objMail->Nmsgs; $idxMsg++  )

    // get header info
    $objHeader = imap_headerinfo( $hMail, $idxMsg );

    // get from object array
    $aFrom = $objHeader->from;

    // process headers
    for( $idx = 0; $idx < count($aFrom); $idx++ )
    
        // get object
        $objData = $aFrom[ $idx ];

        // get email from
        $strEmailFrom = $objData->mailbox . "@" . $objData->host;

        // do some stuff here
    

    // delete message
    imap_delete( $hMail, $idxMsg );


// expunge deleted messages
imap_expunge( $hMail );

// close
imap_close( $hMail );

【讨论】:

谢谢!我应该能够弄清楚如何将身体拉出来,这似乎并不难。我找到了这个,我认为它是正确的: echo imap_body($aFrom, $idx);这将读取正文并在循环期间为每个消息显示它 我也意识到,我可以访问 shell。我从来没有对它做过任何事情,但是我可以把上面的代码放在那里,然后让该代码每隔几秒运行一次吗? 是的 .. 你可能想在 linux 上查找 CRON 作业,我认为在 windows 上安排任务。 linux上的命令可能是:php checkMail.php 我做了同样的事情,但是当我尝试从 cron 运行脚本时它失败了。你能解释一下如何使用 cron 来做到这一点【参考方案2】:

两种选择:

1) 如果您可以访问收件人电子邮件服务器上的 shell,则可以设置规则以在收到新邮件时触发脚本(例如通过 procmail 等)。

2) 您可以让电子邮件正常进入邮箱,然后编写 PHP 脚本以通过 IMAP 访问邮箱,拉取新邮件,处理它们,然后删除它们。然后每隔几分钟通过 cron 运行一次。

【讨论】:

第二个选项可能更可行,因为我不熟悉外壳/如何设置规则。我希望这是非常实时的,所以如果我设置 IMAP,它必须每分钟执行一次。我不确定服务器上会有多大的压力。关于在哪里可以找到如何编写 PHP 脚本以通过 IMAP 访问邮箱的教程有什么建议?

以上是关于使用 PHP 脚本处理传入的电子邮件的主要内容,如果未能解决你的问题,请参考以下文章

使用 PHP 脚本转发电子邮件

使用 PHP 处理退回电子邮件?

将传入的电子邮件通过管道传输到 Windows IIS SMTP 上的脚本?

Zabbix告警脚本-邮件

php.ini,sendmail 配置使用 php 脚本发送电子邮件

Zabbix调用外部脚本发送邮件:python编写脚本