使用PHP PEAR Mail类检查域是否存在

时间:2014-04-10 18:18:35

标签: php email pear

我注意到我的服务器在尝试向无效域发送电子邮件时一直在返回此错误:

Standard Message:   Failed to set sender: user@invaliddomain.coom [SMTP: Invalid response code received from server (code: 553, response: 5.1.8 ... Domain of sender address user@invaliddomain.coom does not exist)]
Standard Code:  10004
DBMS/User Message:  
DBMS/Debug Message:

在尝试发送电子邮件之前,有没有办法先检查域名?我有一种感觉我也可以通过压制这个错误在SMTP服务器端处理这个问题,但我喜欢在发送之前能够先测试一个电子邮件域的想法。谢谢你的想法!

以下是仅供参考的相关代码(变量从表单中过滤):

$headers['To'] = $to_address;
$headers['From'] = $from;
$headers['Reply-To'] = $from;
$headers['Subject'] = $subject;
$this->setHTMLBody($body);
$body = $this->get(array('text_charset' => 'utf-8'));
$headers = $this->headers($headers, true);
$message =& Mail::factory('smtp');
$mail = $message->send($to_address,$headers,$body);

1 个答案:

答案 0 :(得分:1)

您可以使用Net_DNS2来确定域名是否存在,如果存在,请以快活的方式发送电子邮件。

include "Net/DNS2.php";
$r = new Net_DNS2_Resolver();            
try {
    $result = $r->query($domain, 'MX');    
} catch(Net_DNS2_Exception $e) {
    $result = null;         
}
if ($result !== null) {
    // send email...
}

当然,我建议使用某种级别的缓存,这样您就不会重复查找。