PHP:电子邮件解析 - 多个收件人

时间:2012-08-31 04:42:43

标签: php regex parsing email

我正在发送电子邮件,以便将我的服务器发送到PHP脚本。该脚本解析电子邮件,以便我可以分配变量。

我的问题是偶尔会有人将我的电子邮件地址包含在发送给多个收件人的电子邮件中,而我的脚本只会收到第一个。我需要它来查找我的电子邮件地址,然后将其分配给变量。

以下是电子邮件数组的外观:http://pastebin.com/0gdQsBYd

使用上面的示例我需要获得第4位收件人:my_user_email@mydomain.com

以下是我用来获取" To - >的代码。命名"和" To - >地址"

# Get the name and email of the recipient
$toName = $results['To'][0]['name'];
$toEmail = $results['To'][0]['address'];

我假设我需要foreach($results['To'] as $to)然后preg_match,但我不熟悉正则表达式来查找我想要的电子邮件。

一些帮助表示赞赏。谢谢。

2 个答案:

答案 0 :(得分:1)

而不是在foreach循环中使用preg_match,你可以使用strstr,如下所示

假设您正在寻找my_user_email@mydomain.com,请使用以下代码

foreach($results['To'] as $to)
{

// gets value occuring before the @, if you change the 3 rd parameter to false returns domain name

$user = strstr($to, '@', true) ;
if($user == 'my_user_email')
{
//your action code goes here
}

} 

示例:

<?php
$email  = 'name@example.com';
$domain = strstr($email, '@');
echo $domain; // prints @example.com

$user = strstr($email, '@', true); // As of PHP 5.3.0
echo $user; // prints name
?>

答案 1 :(得分:0)

实际上,您根本不需要使用正则表达式。相反,您可以使用PHP for语句循环遍历To地址数组。

$count = count($root['To']);
for ($i=0; $i < $count; $i++) {

    //Do something with your To array here using $root['To'][$i]['address']

}