PHPMailer email gönderemiyorum
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}";
}
Soru hatalı mı? 👎
Eğer sorunun kurallara aykırı olduğunu düşünüyorsanız lütfen bize bildirin!
Cevaplar (10)
$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.
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.
<?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.';
}
?>
Port alanını : 587 olarak değiştirip birde öyle dene.
$mail->SMTPSecure = "ssl"; -> Kaldır
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
gmail hesabını dah az güvenli cihazlarda da kullanmak için gerekli bir ayarı var onu yapman gerekiyor olabilir.
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