it-swarm-tr.com

gmail SMTP sunucusunu kullanarak e-posta gönder PHP posta gemisi

PHP Mailer üzerinden Gmail SMTP sunucusunu kullanarak bir e-posta göndermek istiyorum.

bu benim kodum

<?php
require_once('class.phpmailer.php');

$mail = new PHPMailer();
$mail->IsSMTP();
$mail->CharSet="UTF-8";
$mail->SMTPSecure = 'tls';
$mail->Host = 'smtp.gmail.com';
$mail->Port = 587;
$mail->Username = '[email protected]';
$mail->Password = 'valid password';
$mail->SMTPAuth = true;

$mail->From = '[email protected]';
$mail->FromName = 'Mohammad Masoudian';
$mail->AddAddress('[email protected]');
$mail->AddReplyTo('[email protected]', 'Information');

$mail->IsHTML(true);
$mail->Subject    = "PHPMailer Test Subject via Sendmail, basic";
$mail->AltBody    = "To view the message, please use an HTML compatible email viewer!";
$mail->Body    = "Hello";

if(!$mail->Send())
{
  echo "Mailer Error: " . $mail->ErrorInfo;
}
else
{
  echo "Message sent!";
}
?>

ama bu hatayı alıyorum

Mailer Error: SMTP Error: The following recipients failed: [email protected]

SMTP server error: SMTP AUTH is required for message submission on port 587

etki alanım vatandesign.ir

62
$mail = new PHPMailer(); // create a new object
$mail->IsSMTP(); // enable SMTP
$mail->SMTPDebug = 1; // debugging: 1 = errors and messages, 2 = messages only
$mail->SMTPAuth = true; // authentication enabled
$mail->SMTPSecure = 'ssl'; // secure transfer enabled REQUIRED for Gmail
$mail->Host = "smtp.gmail.com";
$mail->Port = 465; // or 587
$mail->IsHTML(true);
$mail->Username = "[email protected]";
$mail->Password = "password";
$mail->SetFrom("[email protected]");
$mail->Subject = "Test";
$mail->Body = "hello";
$mail->AddAddress("[email protected]");

 if(!$mail->Send()) {
    echo "Mailer Error: " . $mail->ErrorInfo;
 } else {
    echo "Message has been sent";
 }

Yukarıdaki kod benim için test edildi ve çalıştı.

İhtiyacınız olabilir $mail->SMTPSecure = 'ssl';

Ayrıca, söz konusu hesap için iki adımlı doğrulamanın açık olmadığından emin olun;.

GÜNCELLENMİŞ

$ Mail-> SMTP değiştirmeyi deneyebilirsiniz:

$mail->SMTPSecure = 'tls';

Bazı SMTP sunucularının bağlantıları engellediğine dikkat etmek önemlidir .. __ Bazı SMTP sunucuları SSL (veya TLS) bağlantılarını desteklemez.

118
andrew-caulfield

Bu yüzden kendi "SMTP bağlantı hatası" hatasını çözdüm ve başkalarına yardımcı olması durumunda çözümü göndermek istedim.

PHPMailer örneği gmail.phps dosyasında verilen EXACT kodunu kullandım. MAMP kullanırken basitçe işe yaradı ve sonra kişisel sunucuma taşıdığımda SMTP bağlantı hatası aldım.

Tüm Stack Overflow cevaplarını okudum ve PHPMailer'den gelen tüm sorun giderme belgelerinin PHPMailer ile ilgili bir sorun olmadığını söyledi. Sunucu tarafında bir ayar sorunu olduğunu. Farklı portlar denedim (587, 465, 25), 'SSL' ve 'TLS' şifrelemesini denedim. Php.ini dosyamda openssl'nin etkin olup olmadığını kontrol ettim. Güvenlik duvarı sorunu olmadığını kontrol ettim. Her şey kontrol edildi ve hala hiçbir şey yok.

Çözüm, bu çizgiyi kaldırmak zorunda kalmamdı:

$mail->isSMTP();

Şimdi hepsi işe yarıyor. Nedenini bilmiyorum ama işe yarıyor. Kodumun geri kalanı kopyalanır ve PHPMailer örnek dosyasından yapıştırılır.

26
Evan Butler

Ayrıca, iki faktörlü kimlik doğrulaması etkinse, e-posta hesabınızın şifresi yerine kullanmak için uygulamaya özel bir şifre ayarlamanız gerekeceğini de unutmayın.

Bu talimatları izleyerek uygulamaya özel bir şifre oluşturabilirsiniz: https://support.google.com/accounts/answer/185833

Ardından, uygulamanıza özel şifreye $mail->Password değerini ayarlayın.

8
Tim Carr

Sunucunuz Gmail SMTP sunucusuyla bağlantı kuramıyor gibi görünüyor . İşte bu sorunu gidermek için bazı ipuçları: 1) PHP cihazınızda SSL'nin doğru yapılandırılıp yapılandırılmadığını kontrol edin (işleyen modül çalışmıyor. ' t PHP'ye varsayılan olarak kurulur. Yapılandırmanızı phph.ini içinde kontrol etmeniz gerekir) . 2) Güvenlik duvarınızın gerekli bağlantı noktasına yapılan aramalara izin verip vermediğini kontrol edin (burada 465 veya 587). Bunu yapmak için telnet kullanın. Bağlantı noktası açılmazsa, yapılandırmayı ayarlamak için sysdmin'den biraz destek almanız gerekir . Umarım bunu hızlı bir şekilde çözersiniz!

5
Pr Shadoko

Bunu aç Bağlantı ve google sunucularının bilinmeyen sunuculardaki tüm girişimleri engellediği talimatları uygulayın, böylece captcha'yı tıkladığınızda her şeyin iyi olacağını kontrol edin 

3
Yasin Hassanien

Google, muhtemelen spam gönderenleri engellemek için mevcut kullanıcı bilgilerine bağlı olarak Gmail hesaplarına farklı davranır.

Telefon doğrulamasını yapana kadar SMTP'yi kullanamadım. İki kez kontrol etmek için başka bir hesap oluşturdum ve onaylayabildim.

1
 $mail->SMTPOptions = array(
                'ssl' => array(
                    'verify_peer' => false,
                    'verify_peer_name' => false,
                    'allow_self_signed' => true
                )
            );
0
brandenM

bu kod benim için iyi çalışıyor 

    $mail = new PHPMailer;
    //Enable SMTP debugging. 
    $mail->SMTPDebug = 0;
    //Set PHPMailer to use SMTP.
    $mail->isSMTP();
    //Set SMTP Host name                          
    $mail->Host = $hostname;
    //Set this to true if SMTP Host requires authentication to send email
    $mail->SMTPAuth = true;
    //Provide username and password     
    $mail->Username = $sender;
    $mail->Password = $mail_password;
    //If SMTP requires TLS encryption then set it
    $mail->SMTPSecure = "ssl";
    //Set TCP port to connect to 
    $mail->Port = 465;
    $mail->From = $sender;  
    $mail->FromName = $sender_name;
    $mail->addAddress($to);
    $mail->isHTML(true);
    $mail->Subject = $Subject;
    $mail->Body = $Body;
    $mail->AltBody = "This is the plain text version of the email content";
    if (!$mail->send()) {
        echo "Mailer Error: " . $mail->ErrorInfo;
    }
    else {
           echo 'Mail Sent Successfully';
    }
0
Zohaib Hussain

Anderscc doğru yaptı. Teşekkürler. Benim için çalıştı ama% 100 değil. 

Ayarlamak zorunda kaldım

$ mail-> SMTPDebug = 0; 1 olarak ayarlamak, özellikle bazı verileri bir sonraki sayfaya json olarak geçiriyorsanız hatalara neden olabilir. Örnek - Posta gönderilirse doğrulama yapılır, verileri ajax içinden geçirmek için json kullanılır.

Hatalardan kurtulmak için gmail hesabı güvenlik ayarlarımı düşürmek zorunda kaldım: "SMTP connect () başarısız oldu" ve "SMTP HATASI: Şifre komutu başarısız oldu" 

Çözüm: Bu sorun, e-posta hesabını kullanmaya çalışan 'daha az güvenli' uygulamalardan kaynaklanıyor olabilir (bu, google yardımına göre, neyin güvenli olup neyin doğru olmadığı konusunda nasıl karar verdiklerinden emin değildir) OR Ülkeleri değiştirirseniz, üst üste OR birkaç kez giriş yapmaya çalışıyorsunuz (örneğin VPN kullanın, kodu farklı bir sunucuya taşıyın veya gerçekten dünyanın farklı yerlerinden giriş yapmayı deneyin).

Sorunu gideren bağlantılar (google hesabına giriş yapmalısınız):

Not: Daha ayrıntılı referans için aşağıdaki yığın akışı cevap linkine gidebilirsiniz.

https://stackoverflow.com/a/25175234

0
Akshay P. Raul

CPanel kullanıyorsanız, harici sunuculara SMTP ile göndermenize izin veren çiş kutusunu tıklamanız yeterlidir.

CPanel'e giriş yapın> Tweak Ayarları> Tümü> "Giden SMTP'yi root, exim ve postacı ile sınırla (FKA SMTP Tweak)"

Burada cevaplandığı gibi:

"Şifre sunucudan kabul edilmedi: 535 Yanlış kimlik doğrulama bilgisi", GMail ve phpMailer ile gönderirken

0
Tristanisginger