Dobra...
Na surowym protokole SMTP da się przeproadzić poczatkowe fazy dialogu protokołu, sprawdzić hasło, bez wysyłania maila.
Co umie biblioteka, nie powiem. Wiele bibliotek w innych jezykach tego nie zrobi.
Ostatnie zdanie dało mi trochę do myślenia i zacząłem węszyć w angielskim Google'u. Okazało się, że biblioteka, której zamierzam użyć może zwrócić błędy jeśli połączenie się nie udało.
Znalazłem taki kod:
require_once 'phpmailer/class.phpmailer.php';
require_once 'phpmailer/class.smtp.php';
$mail = new PHPMailer(true);
$mail->SMTPAuth = true;
$mail->Username = '[email protected]';
$mail->Password = 'my_awesome_password';
$mail->Host = 'smtp.example.com';
$mail->Port = 465;
// This function returns TRUE if authentication
// was successful, or throws an exception otherwise
$validCredentials = $mail->SmtpConnect();
i żeby nie wywalał błedu na całą stronę
$validCredentials = false;
try {
$validCredentials = $mail->SmtpConnect();
}
catch(Exception $error) { /* Error handling ... */ }
jakoże chcę sprawdzać jquerem w czasie rzeczywistym (po kliknięciu przycisku Zapisz), ale przed faktycznym zapisem, żeby się najpierw zwalidował zedytowałem go:
require "../../plugins/PHPMailer/PHPMailerAutoload.php";
require_once '../../plugins/PHPMailer/class.phpmailer.php';
require_once '../../plugins/PHPMailer/class.smtp.php';
$mail = new PHPMailer(true);
$mail->SMTPAuth = true;
$mail->Username = '[email protected]';
$mail->Password = 'MyPassword';
$mail->Host = 'smtp.domain.org';
$mail->Port = 465;
$mail->SMTPSecure = 'ssl';
// This function returns TRUE if authentication
// was successful, or throws an exception otherwise
#$validCredentials = $mail->SmtpConnect();
$failed = false;
try {
$validCredentials = $mail->SmtpConnect();
}
catch(Exception $error){
$failed = true;
}
if($failed == true){
echo "Error";
}
else{
echo "OK";
}
Nie wiem czemu, bez załadowania Autoloader'a nie chciało działać (testowałem na dwóch skrzynkach - o2.pl i gmail,com)
Teraz będę mógł sprawdzić czy zwrócona wartość jest OK czy Error i albo zwalidować, albo przepuścić i zapisać do bazy, ewentualnie na poziomie tego kodu przy OK zrobić zapis, mniejsza z tym.
Dziękuję za wszystkie odpowiedzi i życzę udanej majówki