0

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

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

这是电子邮件数组的样子: http: //pastebin.com/0gdQsBYd

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

这是我用来获取“To -> name”和“To -> address”的代码

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

我假设我需要执行 a foreach($results['To'] as $to)then apreg_match但我不擅长使用正则表达式来查找我想要的电子邮件。

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

4

2 回答 2

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
?>
于 2012-08-31T05:02:20.857 回答
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']

}
于 2012-08-31T05:22:08.007 回答