-2

在发送电子邮件之前,我尝试了很多方法来跟踪电子邮件是否有效。我正在使用 php mailer 和 swift mail 发送电子邮件。许多网站告诉参考 mx 记录。但它只返回域是否有效。不返回电子邮件。例如,如果我有一个域example.com并且我只创建了一个域mail@example.com,如果我尝试发送邮件到mailmailme@example.com也返回该电子邮件是有效的。但在发送此电子邮件之前,我需要将结果mailmailme@example.com视为无效。

就像http://www.email-validator.net/中的流程一样

4

4 回答 4

1

尝试构建

$APIUrl = 'http://www.email-validator.net/api/verify';
$Params = array('EmailAddress' => $Email,
                'APIKey' => '[your API key]');
$Request = @http_build_query($Params);
$ctxData = array(
     'method' => "POST",
     'header' => "Connection: close\r\n".
     "Content-Length: ".strlen($Request)."\r\n",
     'content'=> $Request);
$ctx = @stream_context_create(array('http' => $ctxData));

// send API request
$result = json_decode(@file_get_contents(
    $APIUrl, false, $ctx));

// check API result
if ($result && $result->{'status'} > 0) {
    switch ($result->{'status'}) {
        // valid addresses have a {200, 207, 215} result code
        case 200:
        case 207:
        case 215:
                echo "Address is valid.";
                break;
        case 114;
                // retry
                break;
        default:
                echo "Address is invalid.";
                echo $result->{'info'};
                echo $result->{'details'};
                break;
    }
} else {
    echo $result->{'info'};
}

进入你的代码

于 2013-09-12T11:44:15.220 回答
0

没有办法 100% 确定电子邮件是有效的。

您可以尝试做的是连接到邮件服务器,启动邮件会话并“要求”服务器接受给定地址的邮件。

如果地址未列出,某些邮件服务器将返回错误,但其他邮件服务器将接受任何地址,只要它在服务器的范围内。

至于您提到的站点,请尝试检查此地址,例如: not_a_valid_address@microsoft.com

您将得到服务器接受此地址的答案,但这并不意味着它是有效的...

于 2013-09-12T11:46:10.403 回答
0

不幸的是,无法可靠地验证电子邮件地址是否有效,因为如果地址不存在,服务器通常不会发回错误。这是必要的,因为否则垃圾邮件发送者可能只是尝试电子邮件地址,并且可以找出哪些是有效的,哪些是无效的。

于 2013-09-12T11:46:14.367 回答
0

在您发送之前,无法验证电子邮件是否有效。我们正在使用 AWS Simple Email Service 发送电子邮件。很好,我们可以用它来配置反弹动作。

https://docs.aws.amazon.com/ses/latest/DeveloperGuide/receiving-email-action-bounce.html

您可以指定 SNS 主题以在电子邮件被退回时发送事件。此外,您可以根据错误代码处理事件并采取措施。

于 2021-08-20T20:04:12.213 回答