標高+1m

Make, Hack, Think

qdsmtpでSMTP_AUTH使えないよって言われたときの対策

qdsmtpでハマったのでメモ。
接続してから220が帰ってくるより前にEHLOを言っちゃってるからおかしくなったみたい。
220が来るまで待ちましょう。

qdsmtp.phpの390行目あたりに

<?php
//省略

if( !$this->already_auth ){
    /*------ここから------*/
    //220が来るまで待つ
    $matches = null;
    $limit = 1000; //10秒くらいで諦める
    while (!$matches && $limit) {
        $mes = fgets($this->sock, 512);
        preg_match('/220/', $mes, $matches);
        --$limit;
        usleep(100000); //0.1秒
    }
    /*------ここまで------*/
                    
    $this->sayHello();

//省略
?>