【问题标题】:PHP email Piping get 'to' fieldPHP电子邮件管道获取“到”字段
【发布时间】:2012-11-12 23:39:49
【问题描述】:

我正在尝试通过 PHP 使用电子邮件管道。

除了无法获得“收件人”字段外,我可以正常工作。

我正在使用以下 PHP 代码:

#!/usr/bin/php -q
<?php

// read from stdin
$fd = fopen("php://stdin", "r");
$email = "";
while (!feof($fd))
{
    $email .= fread($fd, 1024);

    $to1 = explode ("\nTo: ", $email);
    $to2 = explode ("\n", $to1[1]);
    $to = str_replace ('>', '', str_replace('<', '', $to2[0]));

}
fclose($fd);

mail('email@example.com','From my email pipe!','"' . $to . '"');

?>

如果我使用电子邮件地址(例如:john@smith.com)并将电子邮件发送到我的电子邮件地址,该电子邮件地址会转发到我的 PHP 管道脚本 (pipe.php),我希望它能够获取谁电子邮件已发送至。

例如: john@smith.com 通过电子邮件将我的转发电子邮件发送到我的 PHP 管道脚本 (bob@example.com) 我希望它只返回 bob 部分而没有 @example.com

现在发生的情况是它返回整个电子邮件地址,例如“bob@example.com”,我希望它只返回 bob(没有任何谈话标记)。

我试过用这个:

$to = $to.split("@");

但我似乎收到一条错误消息:split() 至少需要 2 个参数。 这将发送给发送电子邮件的人。

有谁知道该怎么做或知道我可能做错了什么?

这是我第一次在 PHP 中使用 Piping,所以如果我做错了什么,请告诉我。

【问题讨论】:

    标签: php stdin piping


    【解决方案1】:

    最终使用:

    $to1 = explode ("\nTo: ", $email);
    $to2 = explode ("\n", $to1[1]);
    $to = str_replace ('>', '', str_replace('<', '', $to2[0]));
    list($toa, $tob) = explode('@', $to);
    

    然后把邮件改成:

    mail('email@example.com','From my email pipe!','"' . $toa . '"');
    

    【讨论】:

      猜你喜欢
      • 2011-04-02
      • 2020-10-19
      • 2016-03-30
      • 2012-04-02
      • 2011-08-09
      • 1970-01-01
      • 1970-01-01
      • 2011-01-09
      • 1970-01-01
      相关资源
      最近更新 更多