1
Server / Gmail zahazuje maily? Pokračování tématu...
« kdy: 22. 07. 2022, 16:20:42 »
Ahoj všichni, jelikož jsem četl Vaši diskuzi ohledně nedoručení mailů do schránek GMailu - https://forum.root.cz/index.php?topic=25665.0 a měl jsem tentýž problém, kdy mi knihovna PHP Mailer nedoručila žádnou zprávu do schránek GMailu, byl jsem nucen začít pátrat proč se tak děje.
Vysvětlení je jednoduché. Funkce v PHP mail() je pro tento účel naprosto nepoužitelná. Je potřeba konkrétně v PHP Maileru, aby se pošta odesílala přímo přes SMTP server, níže předkládám svou funkci, která mi funguje:
Vysvětlení je jednoduché. Funkce v PHP mail() je pro tento účel naprosto nepoužitelná. Je potřeba konkrétně v PHP Maileru, aby se pošta odesílala přímo přes SMTP server, níže předkládám svou funkci, která mi funguje:
Kód: [Vybrat]
function OdesliMail($komu, $from, $domena, $predmet, $text, $nazev_prilohy, $priloha){
require_once "./files/phpmailer/src/Exception.php";
require_once "./files/phpmailer/src/PHPMailer.php";
require_once "./files/phpmailer/src/SMTP.php";
$mail = new \PHPMailer\PHPMailer\PHPMailer(true);
$mail->IsSMTP(); // k odeslání e-mailu použijeme SMTP server
$mail->SMTPSecure = "tls";
$mail->Port = 587;
$mail->Host = "smtp.nejakadomena.cz"; // zadáme adresu SMTP serveru
$mail->SMTPAuth = true; // nastavíme true v případě, že server vyžaduje SMTP autentizaci
$mail->Username = "email"; // uživatelské jméno pro SMTP autentizaci
$mail->Password = "heslo"; // heslo pro SMTP autentizaci
$mail->From = $from; // adresa odesílatele skriptu
$mail->FromName = $domena; // jméno odesílatele skriptu (zobrazí se vedle adresy odesílatele)
$mail->IsHTML(true);
$mail->AddAddress($komu); // přidáme příjemce
if(!empty($nazev_prilohy)){
$mail->AddAttachment($priloha, $nazev_prilohy);
}
$mail->Subject = $predmet; // nastavíme předmět e-mailu
$mail->Body = $text; // nastavíme tělo e-mailu
$mail->WordWrap = 50; // je vhodné taky nastavit zalomení (po 50 znacích)
$mail->CharSet = "utf-8"; // nastavíme kódování, ve kterém odesíláme e-mail
if(!$mail->Send()) { // odešleme e-mail
echo 'Došlo k chybě při odeslání e-mailu.';
echo 'Chybová hláška: ' . $mail->ErrorInfo;
}
else{
echo 'E-mail byl v pořádku odeslán.';
}
}