0

サーバーに送信される電子メールをPHPスクリプトにパイプしています。スクリプトは電子メールを解析するので、変数を割り当てることができます。

私の問題は、たまに誰かが私のメールアドレスを複数の受信者に送信されるメールに含めてしまい、私のスクリプトが最初のメールアドレスしか取得しないことです。メールアドレスを見つけて変数に割り当てるために必要です。

メール配列は次のようになります:http://pastebin.com/0gdQsBYd

上記の例を使用すると、4番目の受信者を取得する必要があります:my_user_email@mydomain.com

これが「宛先->名前」と「宛先->アドレス」を取得するために使用しているコードです

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

foreach($results['To'] as $to)then aを実行する必要があると思いますが、必要なpreg_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

実際には、正規表現を使用する必要はまったくありません。代わりに、Toアドレスの配列をループするPHPforステートメントを使用できます。

$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 に答える