我在发送之前尝试了许多方法来跟踪电子邮件是否有效。我正在使用php邮件和swift邮件发送电子邮件。许多网站告诉参考mx记录。但它只返回域是否有效。 NOt 返回电子邮件。例如,如果我有一个域example.com
并且我只创建了mail@example.com
,如果我尝试将邮件发送到mailmailme@example.com
也返回电子邮件是有效的。但是在发送此电子邮件之前,我需要将结果mailmailme@example.com
为无效。
就像 http://www.email-validator.net/中的过程一样
尝试只构建
$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'};
}
到你的代码中
没有办法100%确定电子邮件是有效的。
您可以尝试做的是连接到邮件服务器,启动邮件会话并"要求"服务器接受给定地址的邮件。
如果未列出地址,某些邮件服务器将返回错误,但其他邮件服务器将接受任何地址,只要该地址在服务器范围内。
至于您提到的网站,请尝试检查此地址,例如:not_a_valid_address@microsoft.com
你会得到一个答案,服务器接受这个地址,但这并不意味着它是一个有效的地址......
不幸的是,无法可靠地验证电子邮件地址是否有效,因为如果地址不存在,服务器通常不会发回错误。这是必要的,因为否则垃圾邮件发送者可以尝试电子邮件地址,并可以找出哪些有效,哪些无效。
发送电子邮件之前,无法验证电子邮件是否有效。我们正在使用 AWS Simple Email Service 发送电子邮件。我们可以用它配置退回操作,这很好。
https://docs.aws.amazon.com/ses/latest/DeveloperGuide/receiving-email-action-bounce.html
您可以指定 SNS 主题以在电子邮件被退回时发送事件。此外,您可以处理事件并根据错误代码采取措施。