Autor Zpráva
opsidiam
Profil
dobry den mam problem a trapim sa s tym asi tyzden neviem si rady s jednym scriptom ktory je na overenie existencie mailov
<?php
session_start();
        function jValidateEmailUsingSMTP($sToEmail, $sFromDomain = "gmail.com", $sFromEmail = "mail@gmail.com", $bIsDebug = false) {

    $bIsValid = true; // assume the address is valid by default..
    $aEmailParts = explode("@", $sToEmail); // extract the user/domain..
    getmxrr($aEmailParts[1], $aMatches); // get the mx records..

    if (sizeof($aMatches) == 0) {
        return false; // no mx records..
    }

    foreach ($aMatches as $oValue) {

        if ($bIsValid && !isset($sResponseCode)) {

            // open the connection..
            $oConnection = @fsockopen($oValue, 25, $errno, $errstr, 30);
            $oResponse = @fgets($oConnection);

            if (!$oConnection) {

                $aConnectionLog['Connection'] = "ERROR";
                $aConnectionLog['ConnectionResponse'] = $errstr;
                $bIsValid = false; // unable to connect..

            } else {

                $aConnectionLog['Connection'] = "SUCCESS";
                $aConnectionLog['ConnectionResponse'] = $errstr;
                $bIsValid = true; // so far so good..

            }

            if (!$bIsValid) {

                if ($bIsDebug) print_r($aConnectionLog);
                return false;

            }

            // say hello to the server..
            fputs($oConnection, "HELO $sFromDomain\r\n");
            $oResponse = fgets($oConnection);
            $aConnectionLog['HELO'] = $oResponse;

            // send the email from..
            fputs($oConnection, "MAIL FROM: <$sFromEmail>\r\n");
            $oResponse = fgets($oConnection);
            $aConnectionLog['MailFromResponse'] = $oResponse;

            // send the email to..
            fputs($oConnection, "RCPT TO: <$sToEmail>\r\n");
            $oResponse = fgets($oConnection);
            $aConnectionLog['MailToResponse'] = $oResponse;

            // get the response code..
            $sResponseCode = substr($aConnectionLog['MailToResponse'], 0, 3);
            $sBaseResponseCode = substr($sResponseCode, 0, 1);

            // say goodbye..
            fputs($oConnection,"QUIT\r\n");
            $oResponse = fgets($oConnection);

            // get the quit code and response..
            $aConnectionLog['QuitResponse'] = $oResponse;
            $aConnectionLog['QuitCode'] = substr($oResponse, 0, 3);

            if ($sBaseResponseCode == "5") {
                $bIsValid = false; // the address is not valid..
            }

            // close the connection..
            @fclose($oConnection);

        }

    }

    if ($bIsDebug) {
        print_r($aConnectionLog); // output debug info..
    }

    return $bIsValid;

}
$email = "opsidiam@gmail.com";
$domain = substr($email, strpos($email, '@') + 1);
if  (checkdnsrr($domain) !== FALSE) {
    echo 'OK!<br />';
}else{echo "ERROR<br />";}
if (filter_var($email, FILTER_VALIDATE_EMAIL) !== FALSE) {
    echo 'OK!<br />';
}else{echo "ERROR<br />";}
$bIsEmailValid = jValidateEmailUsingSMTP("opsidiam@gmail.com", "gmail.com", "email@gmail.com");
echo $bIsEmailValid ? "<b>OK</b>" : "ERROR";
?>

snazim sa overit existenciu emailu opsidiam@gmail.com (to je moja adresa ktora existuje) ale script mi vypisuje ze adresa neexistuje prosim pomozte mi som v koncoch :(
Davex
Profil
Co se vypíše po zapnutí ladících informací na řádku 95?

$bIsEmailValid = jValidateEmailUsingSMTP("opsidiam@gmail.com", "gmail.com", "email@gmail.com", true);
TomášK.
Profil *
Ta funkce označuje i platné e-mailové adresy jako neplatné (podle RFC). Většinou asi projde, e-mailové servery se snaží vypořádat i s klienty, kteří RFC nedodržují.

E-mailová adresa nemusí mít MX record (RFC 5321). Cílový server může odmítnout odesílající server vinou neplatného SPF záznamu (a bude mít pravdu, i když na gmailu je nastavený jen SOFTFAIL). Cílový server může mít odesílající server na blacklistu a adresa bude označená jako neplatná …
opsidiam
Profil
Array ( [Connection] => ERROR [ConnectionResponse] => Network is unreachable ) ERROR
Davex
Profil
opsidiam:
Ta chyba znamená, že se nepodařilo připojit k poštovnímu serveru. Zřejmě je na webhostingu blokované odchozí spojení na TCP port 25.
opsidiam
Profil
v tom prypade mi to preco nejde ani na localhoste?
Davex
Profil
opsidiam:
Netuším, jestli ti to třeba neblokuje firewall, poskytovatel internetového připojení atd.

Vaše odpověď

Mohlo by se hodit

Odkud se sem odkazuje


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: