Question

I am trying to use email piping with PHP.

I have it working except I can't get the 'To' field.

I am using the following PHP code:

#!/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 . '"');

?>

If I use a email address (for example: john@smith.com) and send a email to my email address that is forwarded to my PHP piping script (pipe.php) I want it to be able to get who the email was sent to.

For Example: john@smith.com emails my forwarding email that goes to my PHP piping script (bob@example.com) I want it to return just the bob part only without the @example.com

What happens now is that it returns the whole email address such as "bob@example.com" and I want it to only return bob (without any talking marks).

I have tried using this:

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

but I seem to get an error that says: split() expects at least 2 parameters. That gets sent to the person who sent the email.

Does anyone know how to do this or know what I might be doing wrong?

This is my first time using Piping in PHP, so if I am doing something wrong please let me know.

Was it helpful?

Solution

Ended up using:

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

then changed the mail to:

mail('email@example.com','From my email pipe!','"' . $toa . '"');
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top