v2.5.2
Giriş yap

PHPMailer email gönderemiyorum

egemennk
6,993 defa görüntülendi

Merhaba bir projede kullanmak için PHPMailer sınıfı test ediyordum ama bir türlü email gönderemedim. yardımlarınız için şimdiden teşekkürler.

try {
        //Server settings
        $mail->SMTPDebug = 1;                      // Enable verbose debug output
        $mail->isSMTP();                                            // Send using SMTP
        $mail->Host       = 'smtp.gmail.com';                    // Set the SMTP server to send through
        $mail->SMTPAuth   = true;                                   // Enable SMTP authentication
        $mail->Username   = 'email';                     // SMTP username
        $mail->Password   = 'şifre';                               // SMTP password
        $mail->SMTPSecure = "ssl";         // Enable TLS encryption; `PHPMailer::ENCRYPTION_SMTPS` encouraged
        $mail->Port       = 465;                                    // TCP port to connect to, use 465 for `PHPMailer::ENCRYPTION_SMTPS` above

        //Recipients
        $mail->setFrom('email', 'isim');
        $mail->addAddress('email', 'isim');     // Add a recipient
        

        // Content
        $mail->isHTML(true);                                  // Set email format to HTML
        $mail->Subject = 'mail test';
        $mail->Body    = '<b>Test</b>';

        $mail->send();
        echo 'Message has been sent';
    } catch (Exception $e) {
        echo "Message could not be sent. Mailer Error: {$mail->ErrorInfo}";
    }
Cevap yaz
Cevaplar (10)
recepkaramanli61
692 gün önce

$this->mail->SMTPSecure = 'tls';
$this->mail->Port = 587;

bendede aynı sorun olmuştu, hosting firmasından destek alarak yukarıdaki ayarları yaparak ve
PHP versiyonunu ALT-PHP ile değiştirerek sorunu çözmüştük.

acemi
693 gün önce

bu sorunla bende karşılaştım kodlarda herhangi bir sorun yok
sorun tamamen gmail odaklı
2gmail de bir kilit vardı açıyorduk oluyor du o işlev artık kaldırıldı
onun yerine yanlış hatırlamıyorsam ayarlar kısmından uygulama aizinleri var
orda uygulama ismi giriyorsun örnek: testmail
ve şire belirliyorsun oradaki şifre senin mail şifren oluyor gerisi komple aynı şekilde.

h4ckdr0
700 gün önce
<?php

// PHPMailer ile çoklu mail gönderme işlemi yapan sınıf
require_once 'class.phpmailer.php';                 // PHPMailer sınıfını dahil ediyoruz
require_once 'class.smtp.php';                      // SMTP sınıfını dahil ediyoruz

class Mailer {                                      // Mailer sınıfı oluşturuyoruz

    private $mail;                                  // Mailer sınıfı içinde kullanacağımız mail değişkeni

    public function __construct() {                 // Mailer sınıfı oluşturulduğunda çalışacak olan fonksiyon
        $this->mail = new PHPMailer();              // Mailer sınıfı içindeki mail değişkenine PHPMailer sınıfını atıyoruz
        $this->mail->IsSMTP();                      // SMTP kullanacağımızı belirtiyoruz
        $this->mail->SMTPAuth = true;               // SMTP kullanıcı adı ve şifre ile giriş yapacağımızı belirtiyoruz
        $this->mail->SMTPSecure = 'ssl';            // SSL bağlantısı kullanacağımızı belirtiyoruz
        $this->mail->Host = 'smtp.gmail.com';       // SMTP sunucusunun adresini belirtiyoruz
        $this->mail->Port = 465;                    // SMTP sunucusunun portunu belirtiyoruz
        $this->mail->Username = '[email protected]';   // SMTP kullanıcı adını belirtiyoruz
        $this->mail->Password = '************';     // SMTP şifresini belirtiyoruz
        $this->mail->SetFrom('[email protected]', 'Gönderen Adı'); // Gönderen adresini ve adını belirtiyoruz
        $this->mail->CharSet = 'UTF-8';             // Karakter setini belirtiyoruz
    }

    public function send($to, $subject, $message) { // Tekil mail gönderme işlemi yapan fonksiyon
        $this->mail->Subject = $subject;            // Mail konusunu belirtiyoruz
        $this->mail->MsgHTML($message);             // Mail içeriğini belirtiyoruz
        $this->mail->AddAddress($to);               // Mail adresini belirtiyoruz
        if (!$this->mail->Send()) {                 // Mail gönderme işlemi başarısız olursa
            return false;                           // false değeri döndürüyoruz
        } else {                                    // Mail gönderme işlemi başarılı olursa
            return true;                            // true değeri döndürüyoruz
        }
    }

    public function sendMultiple($to, $subject, $message) { // Çoklu mail gönderme işlemi yapan fonksiyon
        $this->mail->Subject = $subject;                    // Mail konusunu belirtiyoruz
        $this->mail->MsgHTML($message);                     // Mail içeriğini belirtiyoruz
        foreach ($to as $address) {                         // Mail adreslerini döngüye alıyoruz
            $this->mail->AddAddress($address);              // Mail adresini belirtiyoruz
        }   
        if (!$this->mail->Send()) {                         // Mail gönderme işlemi başarısız olursa
            return false;                                   // false değeri döndürüyoruz               
        } else {                                            // Mail gönderme işlemi başarılı olursa
            return true;                                    // true değeri döndürüyoruz
        }
    }

}

// Mail gönderme işlemi
$mailer = new Mailer();                                         // Mailer sınıfını oluşturuyoruz

$to = '[email protected]';                                 // Tekil mail gönderme işlemi için mail adresi
$subject = 'PHPMailer ile Tekli Mail Gönderme';                 // Mail konusu
$message = 'PHPMailer ile tekli mail gönderme işlemi yaptık.';  // Mail içeriği
if ($mailer->send($to, $subject, $message)) {                   // Tekil mail gönderme işlemi başarılı olursa
    echo 'E-posta başarıyla gönderildi.';                       // Ekrana mesaj yazdırıyoruz
} else {                                                        // Tekil mail gönderme işlemi başarısız olursa
    echo 'E-posta gönderilemedi.';                              // Ekrana mesaj yazdırıyoruz
}

// Çoklu mail gönderme işlemi
$to = [                                                         // Çoklu mail gönderme işlemi için mail adreslerini diziye atıyoruz
    '[email protected]',
    '[email protected]',
    '[email protected]'
];
$subject = 'PHPMailer ile Çoklu Mail Gönderme';
$message = 'PHPMailer ile çoklu mail gönderme işlemi yaptık.';
if ($mailer->sendMultiple($to, $subject, $message)) {
    echo 'E-posta başarıyla gönderildi.';
} else {
    echo 'E-posta gönderilemedi.';
}

?>
siyahkalem
923 gün önce

Port alanını : 587 olarak değiştirip birde öyle dene.

$mail->SMTPSecure = "ssl"; -> Kaldır

mutluol
1667 gün önce

include "mail/class.phpmailer.php";
$mail = new PHPMailer;

$mail->IsSMTP(); // Set mailer to use SMTP
$mail->Host = 'mail..online'; // Specify main and backup server
$mail->Port = 465; // Set the SMTP port
$mail->SMTPAuth = true; // Enable SMTP authentication
$mail->Username = '[email protected]'; // SMTP username
$mail->Password = ''; // SMTP password
$mail->SMTPSecure = 'ssl'; // Enable encryption, 'ssl' also accepted

$mail->From = '[email protected]';
$mail->FromName = 'Ali ';
$mail->AddAddress('@gmail.com', 'Ali'); // Add a recipient // Name is optional

$mail->IsHTML(true); // Set email format to HTML
$mail->CharSet = 'UTF-8';
$mail->AddAttachment('veritabaniyedek.zip');

$mail->Subject = 'Here is the subject';
$mail->Body = 'This is the HTML message body <strong>in bold!</strong>';
$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;
exit;
}

bu benim kullandığım mail sınıfı veritabanı yedeğini göndermek için kullanıyorum sadece dosya ekleyip çalışıyor yani kullanıcı bilgilerini düzenleyip dene bir

egemennk
1667 gün önce

onu da ayarladım

pcmemo
1668 gün önce

gmail hesabını dah az güvenli cihazlarda da kullanmak için gerekli bir ayarı var onu yapman gerekiyor olabilir.

https://www.google.com/search?q=gmail daha az güvenli uygulama erişimi&amp;oq=gmail daha az g&amp;aqs=chrome.1.69i57j0l5.5838j0j9&amp;sourceid=chrome&amp;ie=UTF-8

egemennk
1669 gün önce

2020-03-19 17:02:05 SMTP ERROR: Failed to connect to server: (0)
SMTP connect() failed. https://github.com/PHPMailer/PHPMailer/wiki/Troubleshooting
Message could not be sent. Mailer Error: SMTP connect() failed. https://github.com/PHPMailer/PHPMailer/wiki/Troubleshooting

Bu hatayı veriyor

egemennk
1669 gün önce

Gerekli olan her şeyi dahil ettim

aydinkeskin
1669 gün önce

vendor/autoload.php dahil etmen gerek.