【问题标题】:check if domain exists using PHP PEAR Mail class使用 PHP PEAR Mail 类检查域是否存在
【发布时间】:2014-05-24 15:00:10
【问题描述】:

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

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);

【问题讨论】:

    标签: php email pear


    【解决方案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...
    }
    

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

    【讨论】:

    • 谢谢客人,我试试这个!看起来是一个很好的解决方案。我仍然想知道为什么我以前没有遇到过这个问题...
    猜你喜欢
    • 2011-04-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-11
    • 2011-09-30
    • 2018-06-04
    • 2012-06-12
    相关资源
    最近更新 更多