PHP电子邮件管道到达'字段'

时间:2012-11-25 06:31:12

标签: php stdin piping

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

我有工作,但我无法获得'To'字段。

我正在使用以下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,所以如果我做错了,请告诉我。

1 个答案:

答案 0 :(得分: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 . '"');