php адрес электронной почты - PullRequest
4 голосов
/ 03 августа 2009

Я пытаюсь настроить программу, которая будет принимать входящие сообщения электронной почты, а затем разбивать «отправитель» и «сообщение» на переменные php, которыми я затем смогу манипулировать при необходимости, но я не уверен, с чего начать.

У меня уже есть адрес электронной почты, отправленный в указанный php-файл (через cpanel)

Ответы [ 3 ]

2 голосов
/ 03 августа 2009

Посмотрите на класс eZ Components ezcMailParser . Вам нужно будет реализовать интерфейс - ezcMailParserSet - чтобы использовать его.

2 голосов
/ 03 августа 2009

Вот рабочий раствор

#!/usr/bin/php -q
<?php
// read from stdin
$fd = fopen("php://stdin", "r");
$email = "";
while (!feof($fd)) {
$email .= fread($fd, 1024);
}
fclose($fd);

// handle email

$lines = explode("\n", $email);

// empty vars

$from = "";
$subject = "";
$headers = "";
$message = "";
$splittingheaders = true;

for ($i=0; $i < count($lines); $i++) {
if ($splittingheaders) {
// this is a header
$headers .= $lines[$i]."\n";
// look out for special headers
if (preg_match("/^Subject: (.*)/", $lines[$i], $matches)) {
$subject = $matches[1];
}
if (preg_match("/^From: (.*)/", $lines[$i], $matches)) {
$from = $matches[1];
}
} else {
// not a header, but message
$message .= $lines[$i]."\n";
}

if (trim($lines[$i])=="") {
// empty line, header section has ended
$splittingheaders = false;
}
}
echo $from;
echo $subject;
echo $headers;
echo $message;
?>

Работает как шарм.

2 голосов
/ 03 августа 2009

Начните с:

$lines = explode("\n",$message_data);
$headers = array();
$body = '';

$in_body = false;

foreach($lines as $line)
{
     if($in_body)
     {
          $body .= $line;
     }
     elseif($line == '')
     {
          $in_body = true;
     }
     else
     {
          list($header_name,$header_value) = explode(':',$line,2);
          $headers[$header_name] = $header_body;
     }
}

// now $headers is an array of all headers and you could get the from address via $headers['From']
// $body contains just the body

Я просто написал это на макушке; не проверял синтаксис или ошибки. Просто отправная точка.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...