Witam,
próbował ktoś wysyłać formularz z poczty home.pl?
Większość osób wysyła je przez przez gmaila - ja też robiłem tak na innych stronach ale klient ma serwer w Niemczech. Wydaje mi się, że to jest powód bo identyczny kod działa mi na kilku innych stronach na serwerze w Polsce. Sądzę, że gmail przy próbie logowania z innego kraju prosi o dodatkowa autentyfikację (podanie nr. tel lub innego maila) i dlatego pojawił się problem.
Dostaje taki komunikat:
BĹÄ
d SMTP: Nie moĹźna przeprowadziÄ autentykacji. Błąd wysyłania: BĹÄ
d SMTP: Nie moĹźna przeprowadziÄ autentykacji.
Podaję kod - ale jest przetestowany i działa na innych serwerach:
<?php
// jesli formularz został zgłoszony - przetwarzamy go
if ($_POST['wyslij']) {
if ( !$_POST['tresc'] OR
!$_POST['podpis'] OR
!$_POST['email'] ) { echo "Błąd. Puste pola!"; break; }// coś poszło nie tak
$tresc = $_POST['tresc'];
$podpis = $_POST['podpis'];
$email = $_POST['email'];
$adresat = "adrest@domena.pl";
$dozwolone_adresy = "adrest@domena.pl";
if (strpos($dozwolone_adresy,$adresat)===false) { echo "Niedozwolony adresat! $adresat"; break; }
// utnij zbyt długą treść i podpis
if ( strlen($tresc) > 2000
) $tresc = substr($tresc, 0
, 2000
); if ( strlen($podpis) > 40
) $podpis = substr($podpis, 0
, 40
);
if(!preg_match('|^[_a-z0-9.-]*[a-z0-9]@[_a-z0-9.-]*[a-z0-9].[a-z]{2,3}$|e', $email)) { echo "Niepoprawny adres email!"; break; }
require_once('phpmailerx/class.phpmailer.php');
$mail = new PHPMailer();
$mail->IsSMTP(); // send via SMTP
$mail->SMTPAuth = true; // turn on SMTP authentication
$mail->Host = "smtp.gmail.com";
$mail->Port = 465;
$mail->Mailer= "smtp";
$mail->Username = "mail@gmail.com"; // SMTP username
$mail->Password = "haslo"; // SMTP password
$mail->AddReplyTo ($email, $podpis);
$mail->From = $email;
$mail->FromName = $podpis;
$mail->Subject = "Ze strony od: $podpis";
$mail->Body = $tresc;
$mail->WordWrap = 50;
$mail->AddAddress ($adresat);
// $mail->IsHTML (true);
$mail->SetLanguage("pl", "phpmailerx/language/");
$mail->CharSet = 'utf-8';
if(!$mail->Send())
{ echo "Błąd wysyłania: " . $mail->ErrorInfo; } else
{ echo "Wiadomość została wysłana."; }
}
else
{
?>
<form action="kontakt.php" method="post" name="formularz_kontaktowy">
<textarea style="width:260px; height: 160px; " name="tresc" ></textarea><br /><br />
<br />
<label for="podpis">Imię i Nazwisko: </label>
<input id="podpis" type="text" name="podpis" /><br /><br />
<label for="email" >Email: </label>
<input id="email" type="text" name="email" /><br /><br />
<input class="wysylacz" type="submit" name="wyslij" value="Wyślij" />
</form>
<?php } ?>