Sprawdzanie czy dane logowania do poczty SMTP są poprawne

0

Cześć,

piszę ustawienia panelu, gdzie znajduje się formularz danych logowania do poczty SMTP, żeby można było skonfigurować e-mail do wysyłania automatycznych powiadomień e-mailowych. Użyję do tego biblioteki PHPMailer, aleee, potrzebuję sprawdzić, czy podane przez użytkownika (a właściwie admina witryny) dane działają/są poprawne.

Jakoże jeszcze czegoś takiego nigdy nie robiłem to prosiłbym o pomoc.

2

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.

1

Ewentualnie, jeśli biblioteka tego nie umożliwia, a sam nie wiesz, jak podejść do tematu ręcznie, możesz spróbować wysłać maila na jakiś swój adres. Jeśli dojdzie - znaczy, że było ok :D

2

Dodaj przycisk "wyślij testowego maila" i pozostaw userowi weryfikację czy podał poprawne dane

2

Dobra...

AnyKtokolwiek napisał(a):

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

1 użytkowników online, w tym zalogowanych: 0, gości: 1