从电子邮件地址获取电子邮件解析器

时间:2012-12-03 14:00:47

标签: php

我正在使用这段绝对惊人的代码:https://github.com/plancake/official-library-php-email-parser/blob/master/PlancakeEmailParser.php

但缺少的一件事就是能够获得From电子邮件地址。

我添加了简单的内容:

public function getFromEmail()
{
    if (!isset($this->rawFields['from']))
    {
        return false;
    }

    return $this->rawFields['from'];
}

但是如何在返回时仅获取电子邮件地址部分:John Smith<john@gmail.com>

如果发件人地址只有john@gmail.com

,我还需要这个

感谢答案,这是完成的代码:

public function getFromEmail()
{
    $email = trim($this->rawFields['from']);

    if(substr($email, -1) == '>'){
        $fromarr = explode("<",$email);
        $mailarr1 = explode(">",$fromarr[1]);
        $email = $mailarr1[0];
    }

    return $email;
}

2 个答案:

答案 0 :(得分:2)

这是一个非常简单的正则表达式:

$output = array();
preg_match("/.*<(.*?)>.*?/", $this->rawFields['from'], $output);
$email_address = $output[1];

小心:如果某人的名字包含&lt;或者&gt;它可能会导致安全漏洞。惰性运算符(*。?)用于确保最后一组&lt; &GT;使用。

HTH

PS:使用http://gskinner.com/RegExr/测试正则表达式!

答案 1 :(得分:0)

$mailid='John Smith<john@gmail.com>';
$mailarr=explode("<",$mailid);
$mailarr1=explode(">",$mailarr[1]);
$just_emailid=$mailarr1[0];