Postępowałem ze wszystkimi instrukcjami w tym pytaniu:

SMTP Connect () Niepowodzenie PHPMailer - PHP

Ale nadal nigdy nie udało mi się zdobyć PHPMaila do pracy. Szukałem gdzie indziej - bez rozwiązań.

Możesz zobaczyć wyniki tutaj: https://unidrones.co.za/junesecond

Kiedy próbuję wysłać wiadomość e-mail za pomocą moich poświadczeń konta Gmail, zwraca błąd "Connect () nie powiódł się".

Używam tego kodu szablonu:

<?php
require 'PHPMailerAutoload.php';
if(isset($_POST['send']))
{
$email = $_POST['email'];
$password = $_POST['password'];
$to_id = $_POST['toid'];
$message = $_POST['message'];
$subject = $_POST['subject'];
$mail = new PHPMailer;
$mail->isSMTP();
$mail->Host = 'ssl://smtp.gmail.com';
$mail->Port = 587;
$mail->SMTPSecure = 'tls';
$mail->SMTPAuth = true;
$mail->Username = $email;
$mail->Password = $password;
$mail->addAddress($to_id);
$mail->Subject = $subject;
$mail->msgHTML($message);
if (!$mail->send()) {
$error = "Mailer Error: " . $mail->ErrorInfo;
echo '<p id="para">'.$error.'</p>';
}
else {
echo '<p id="para">Message sent!</p>';
}
}
else{
echo '<p id="para">Please enter valid data</p>';
}
?>

Edytuj: Nie wiem, czy jest nowy sposób wysyłania wiadomości e-mail przez PHP. Wszystkie samouczki i lekcje, których używam, uczy to w ten sposób (tj. Korzystanie z biblioteki PHPmailer).

Miałem trudny czas znalezienie biblioteki PHPMailer, która zawiera plik PHPMaileraCoad.php, który sprawia, że myślę, że jest trochę przestarzały lub przestarzałe, ale jak inaczej wysyłam e-maile? Nie wiem

1
J Doe 2 czerwiec 2018, 16:45

3 odpowiedzi

Najlepsza odpowiedź

Powodem, dla którego masz trudności ze znalezieniem PHPMailerAutoload.php jest dlatego, że jest stary i nie jest już obsługiwany. Uzyskaj najnowszą i oprzeć swój kod w Przykład Gmaila Zapewniony. Jeśli jesteś nowy do PHP, Naucz się używać kompozytora.

Te trzy linie są sprzeczne:

$mail->Host = 'ssl://smtp.gmail.com';
$mail->Port = 587;
$mail->SMTPSecure = 'tls';

ssl:// w Host nadpisuje tls w SMTPSecure, w wyniku czego próbuje użyć ukrytych TLS do portu oczekującego wyraźnego TLS. Albo użyj ssl z portem 465 lub {x5}} z portem 587, a nie innymi kombinacjami. Niezależnie od tego, wydaje się, że to nie twój problem.

Jako Instrukcja rozwiązywania problemów mówi o tym dokładnie "SMTP Connect () nie powiodła się" Błąd:

Jest to często zgłaszane jako problem PHPMailer, ale prawie zawsze do lokalnej awarii DNS, blokowanie zapory (na przykład jako Godaddy) lub inną kwestię w sieci lokalnej. Oznacza to, że PHPMailer nie jest w stanie skontaktować się z serwerem SMTP określonego w obiekcie gospodarza, ale nie mówi dokładnie dlaczego.

Następnie opiszę kilka technik, których możesz użyć, aby spróbować zdiagnozować dokładnie, dlaczego nie możesz się połączyć. Niesamowite rzeczy, dokumentacja.

Próbowałem twojej formy z kilkoma losowymi danymi i zobaczyłem, że nie udało Ci się podać najważniejszego komunikatu o błędzie w pytaniu:

2018-06-02 14:47:25 SMTP ERROR: Failed to connect to server: Network is unreachable (101)
2018-06-02 14:47:25 SMTP connect() failed

To sugeruje, że Twój ISP prawdopodobnie blokuje wyjazdowy SMTP, więc masz odpowiedź - być może potwierdzić, że za pomocą kroków sugeruje (telnet} itp.) I zapoznaj się z dokumentami lub wspornikami ISP.

Masz również duże pominięcie - nie jesteś ustawienie adresu "z":

$mail->setFrom('myname@gmail.com', 'My Name');

Należy pamiętać, że jeśli wysyłasz przez Gmail, możesz używać adresu swojego konta, lub zaprogramowanych aliasów (ustaw w programach Gmaila), a nie arbitralne adresy.

Tymczasem jest to nieco szalona rzecz do wdrożenia tak jak i tak - dlaczego ktoś miałby kiedykolwiek wejść do swoich poświadczeń Gmaila w takiej formie?

1
Synchro 2 czerwiec 2018, 14:53

Czy próbowałeś użyć następującej konfiguracji?

$mail->Host       = 'smtp.gmail.com';
$mail->SMTPSecure = 'ssl';
$mail->Port       = 465;
$mail->CharSet    = 'UTF-8';
0
Syndesi 2 czerwiec 2018, 13:53
<?php
require 'PHPMailerAutoload.php';
$mail = new PHPMailer;

//$mail->SMTPDebug = 4;                               // Enable verbose debug output

$mail->isSMTP();                                      // Set mailer to use SMTP
$mail->Host = 'smtp.gmail.com';  // Specify main and backup SMTP servers
$mail->SMTPAuth = true;                               // Enable SMTP authentication
$mail->Username = 'your gamil id';                 // SMTP username
$mail->Password = 'gmail password';                           // SMTP password
$mail->SMTPSecure = 'tls';                            // Enable TLS encryption, `ssl` also accepted
$mail->Port = 587;                                    // TCP port to connect to

$mail->setFrom('set from address', 'name');
$mail->addAddress('recipient address', 'Joe User');     // Add a recipient

$mail->addReplyTo('reply address', 'Information');


// $mail->addAttachment('/var/tmp/file.tar.gz');         // Add attachments
// $mail->addAttachment('/tmp/image.jpg', 'new.jpg');    // Optional name
$mail->isHTML(true);                                  // Set email format to HTML

$mail->Subject = 'Here is the subject';
$mail->Body    = 'This is the HTML message body <b>in bold!</b>';
$mail->AltBody = 'This is the body in plain text for non-HTML mail clients';

if(!$mail->send()) {
    echo 'Message could not be sent.';
    echo 'Mailer Error: ' . $mail->ErrorInfo;
} else {
    echo 'Message has been sent';
}
-1
Hari 2 czerwiec 2018, 13:57