Gmail SMTP e-mail küldés
2021-06-08T18:28:46+02:00
2021-06-12T14:52:17+02:00
2022-08-12T03:15:29+02:00
Fujitsu
Szép napot!

Egy weboldalról szeretnék a gmail SMTP szolgáltatását felhasználva kis mennyiségben (napi 20-30 db) e-mailt küldeni. PHPMailert használok (lásd alsó kódot)

Februárban teszteltem a lent látható scriptet és működött weboldalról, de májusban a Google szigorított a kétfaktoros azonosításban.

2021 februárban a második faktorként kapott 16 karakteres egyedi második jelszóval sikerült weboldalról is küldeni emailt, most viszont a második jelszó csak olyan APP-okon használható, mely saját eszköz, saját telefon, iphone, Apple vagy Windows-os gép stb appjai. Weboldal szervere nem szerepel a választási lehetőségek között (én nem látok ilyet), illetve az egyéni név opció mit is takar??

Itt a lehetőségek listája az alábbi képen:

https://i.imgur.com/ukhbT22.png

Tehát weboldalon futtatva DEBUG módban futtatva az alábbi hibaüzenettel megáll

2021-06-08 12:30:01 SERVER -> CLIENT: 220 TLS go ahead
SMTP Error: Could not connect to SMTP host. 

Viszont Windows 10-es WAMP serveren localhost-on lefut, és meg is érkezik az e-mail (a script ugyanaz). Működik hibátlanul (!) a PHP kód:

2021-06-08 12:52:54 SERVER -> CLIENT: 220 smtp.gmail.com ESMTP ....
.......
2021-06-08 12:52:55 SERVER -> CLIENT: 221 2.0.0 closing connection w13sm21446597wrc.31 - gsmtp
Email message sent.

Kérdésem, hogyan tudnám rávenni a gmailt, hogy weboldalról is végrehajtsa  a kódot, úgy mint februárban?

(MEGJEGYZÉS: a weboldalon az email küldés rendes mail() függvénnyel néha SPAM-be küldi az e-mailt, nem elég megbízható - annak ellenére hogy rekordok be vannak állítva rendesen a tárhely szolgáltatónál)

<?php
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\SMTP;
use PHPMailer\PHPMailer\Exception;


header("Content-type: text/html; charset=iso-8859-2");
date_default_timezone_set('Europe/Budapest');

require_once __DIR__ . '/vendor/phpmailer/src/Exception.php';
require_once __DIR__ . '/vendor/phpmailer/src/PHPMailer.php';
require_once __DIR__ . '/vendor/phpmailer/src/SMTP.php';

$mail = new PHPMailer(true);
try {

   $mail->SMTPDebug = SMTP::DEBUG_SERVER; // for detailed debug output
   $mail->isSMTP();
    $mail->Host = 'smtp.gmail.com';
    $mail->SMTPAuth = true;
    $mail->SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS;
    $mail->Port = 587;
    $mail->Username = 'emilem@gmail.com'; // YOUR gmail email
    $mail->Password = '16karakteresjelszo';// YOUR gmail password
    $mail->setFrom('emilem@gmail.com', 'NÉV');
    $mail->addAddress('cimzett@freemail.hu', 'CÍMZETT');
    $mail->addReplyTo('mail@egyweboldal.hu', 'ADMIN'); // to set the reply to
    $mail->IsHTML(false);
    $mail->Subject = "Árvíztűrő tükörfúrógép";


    $mail->Body = '
Árvíztűrő tükörfúrógép 
';
    $mail->send();
    echo "Email message sent.";
} catch (Exception $e) {
    echo "Error in sending email. Mailer Error: {$mail->ErrorInfo}";
}

?>
Mutasd a teljes hozzászólást!

  • Próbáld meg ezt hozzáírni a $mail->send(); előtt.

    $mail->SMTPOptions = array( 'ssl' => array( 'verify_peer' => false, 'verify_peer_name' => false, 'allow_self_signed' => true ) );
    Nekem a mail() függvény is jól küldi a levelet.
    Sok jó beállítás kell hozzá., pl DKIM, SPF

    Teszteléshez próbáld ki: Newsletters spam test by mail-tester.com
    A kiírt generált e-mailcímre küldj teszt levelet,
    azzal a tartalommal, amit normál esetben is küldesz, és ne árvíztűrőt küldj
    ezután ha megérkezett a leveled megnézheted mi a hiba vagy minden OK-e.

    A küldött levél egyébként számos okból SPAM-be kerülhet, pl. IP cím blokkolás, vagy az üzenet tartalmától függően, stb
    Mutasd a teljes hozzászólást!
  • Kipróbáltam a $mail->SMTPOptions-t.

    A Google autentikáció lesz a ludas.
    Próbáltam már kétfaktoros azonosítással vagy a másik módon is ( normál jelszóval és a Kevésbé biztonságos alkalmazások hozzáférése BEKAPCSOLVA párossal).

    Mindkét esetben 535-ös SMTP hibaüzenet jön.

    SERVER -> CLIENT: 535 Incorrect authentication data

    Pedig a felhasználónév és jelszó helyes. Úgy látom a jelszónál akad ki, mert a második SERVER -> CLIENT: 334 üzenet után jön közvetlen. az 535-ös hibakód

    Ha kikapcsolom a PHP-ban az autentikáció-t ($mail->SMTPAuth = false;), akkor megérkezik az email, de SPAM-be kerül, de nem a gmail küldi el, hanem a tárhelyszolgáltató szervere.

    A mail testert már korábban is futtattam, egyetlen ellenőrzés sem jelez spam email címet.
    Mutasd a teljes hozzászólást!
  • Próbáld ki: google. Én nem a levelek küldésével, hanem a levelek olvasásával (POP3/IMAP) bajlódtam és ez segített. Persze emellé mindenképp kell engedélyezni a kevésbé biztonságos alkalmazások használatát is, amit ha jól olvastam, már megtettél. Ez nem ajánlott és nem is jó dolog, de enélkül én nem jártam sikerrel.
    Mutasd a teljes hozzászólást!
  • Ezt esetleg kipróbálhatod (én nem tettem) talán segít. (mármint az Answer rész.) Itt valai ssl:// módon van megadva a host, és 465-ös porton megy.

    nem a gmail küldi el, hanem a tárhelyszolgáltató szervere

    Az nagy mutatvány lenne a szolgáltatódtól, hogy beleolvas a gmail-es titkosított kommunikációdba, látja, hogy azzal nem ment, és akkor inkább elküldi ő.  Valószínűbbnek tartom, hogy elnéztél valamit. A megérkezett levél nyers formátumában a fejlécekből általában szépen kiolvasható, milyen szervereken ment át a levél.

    A kevésbé biztonságos alkalmazásokról érdemes tudni, hogy inaktivitás esetén a google fogja magát, és idővel kikapcsolja, hogy aztán megint be kelljen kapcsolnod. Ahogy én látom a folyamatokat, néhány hónap múlva már ezt a lehetőséget sem fogják meghagyni. 

    Megjegyzésként írom, hogy a "kevésbé biztonságos" nem a kommunikációról szól (az teljesen jó titkos kapcsolaton keresztül megy), hanem hogy a google nem akarja, hogy a jelszavadat odaadd a levelező programoknak, mert hogy ugyanazzal a jelszóval a fiókod összes adatához hozzá lehet férni (android eszközök, könyvjelzők, tárolt jelszavak, stb...)

    A 16 jegyű alkalmazásjelszóval egyébként mennie kellene akármilyen SMTP klienssel, amelyik tud ssl-en keresztül kapcsolódni.
    Mutasd a teljes hozzászólást!
  • Napi 25-30 levélnél ne gagyi gmailről küldj.  Fizess inkább egy vps-ért. vpsserver-nél 25 usd-ért kapsz windows-t és mehet rá az ingyenes hmailserver. Beállítható a ptr rekord is. Mármint, hogy milyen nevű hostname-re mutasson az ip. 

    operavps-nél voltam és minden rekord stb. beállítva. icloud nem engedte be a leveleket nemhogy spam....

    Semmit nem tudsz csinálni ha olyan az ip, akkor blokkolják. Lehet valamikor arról nagy mennyiségben menetek levelek és tiltják még akkor is ha nincs a spamhaus-on az ip. Tárhelyről kész csoda, ha a nem spam-be kerül. outlook, hotmail 100%-ig spambe rakja a tárhelyeseket. Most a vpsserver-ről egyik levél se spam. outlook, hotmail is ok. mail-tester 10/10
    Mutasd a teljes hozzászólást!
  • M. Aladár! Ez sem segített.
    Mutasd a teljes hozzászólást!
  • Doi!

    16 karakteres jelszóval, kétlépcsős azonosítással localhostról, windows alatt hibátlan a script.
    Mutasd a teljes hozzászólást!
  • NodeJS!

    "
    Tárhelyről kész csoda, ha a nem spam-be kerül. outlook, hotmail 100%-ig spambe rakja a tárhelyeseket.
    "

    Így van, ezt tapasztalom én is, ezért próbálkozom a gmail-lel. A script localhost-ról hibátlan és nem SPAM-be megy, de tárhelyről már nem tud kapcsolódni a fiókhoz.
    Mutasd a teljes hozzászólást!
  • Kipróbáltam és működik.
    Mutasd a teljes hozzászólást!
  • Én is kipróbáltam, és nem működik. POP3 levelezést saját eszközön használsz, nem ugyanaz, mintha egy weboldal küld ki egy emailt.

    Nem a jelszavakkal van a gond, hanem a Google autentikációval. De dolgozok az ügyön. Ma pl sikerült https://localhostról kommunikálni https://weboldalam.hu/valami.php-vel A Credentials kiakapcsolása volt a megoldás kulcsa. Ezt is itt meg lehet csinálni, de akkor sajnos SPAM-be kerül a levél.
    Mutasd a teljes hozzászólást!
  • Az SMTP is működik. Kipróbáltam. Nem csak a POP3/IMAP.



    1. lesssecureapps
    2. DisplayUnlockCaptcha

    <?php // PHPMailer 6.4.1 $from_name = '********'; $from_mail = '********@gmail.com'; $from_pass = '********'; $to_name = '********'; $to_mail = '********@********.********'; $subject = 'Teszt Elek'; $msg = 'Tesztelek.'; use PHPMailer\PHPMailer\PHPMailer; use PHPMailer\PHPMailer\SMTP; require_once ( 'PHPMailer-master/src/PHPMailer.php' ); require_once ( 'PHPMailer-master/src/SMTP.php' ); $mail = new PHPMailer (); $mail-> isSMTP (); $mail-> SMTPDebug = SMTP::DEBUG_SERVER; $mail-> Host = 'smtp.gmail.com'; $mail-> Port = 587; $mail-> SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS; $mail-> SMTPAuth = true; $mail-> Username = $from_mail; $mail-> Password = $from_pass; $mail-> setFrom ( $from_mail, $from_name ); $mail-> addAddress ( $to_mail, $to_name ); $mail-> Subject = $subject; $mail-> msgHTML ( $msg ); if ( ! $mail-> send () ) { echo 'Hiba: ' . $mail-> ErrorInfo; } else { echo 'OK'; } ?>

    Nekem rendesen megérkezik és nem landol a SPAM mappába.
    Mutasd a teljes hozzászólást!
  • Akkor pontosan tisztáznunk kell, milyen beállítással tesztelted.

    1. lesssecureapps (bekapcsolva sem ment az email küldés, tehát kikapcsoltam).

    2. Bejelentkezés – Google-fiók

    "
    Fiókhozzáférés engedélyezve

    Próbáljon meg ismét bejelentkezni Google Fiókjába az új eszközről vagy alkalmazásból.

    Megjegyzés: Mivel fiókjánál engedélyezve van a kétlépcsős azonosítás, lehet, hogy létre kell hoznia egy alkalmazásfüggő jelszót, hogy bejelentkezhessen az alkalmazással.
    "

    Nos itt a Windows-os gépre vonatkozón unlockolok, tehát nem a webhelyen. Ezért ez is hatástalan. 

    Én jelenleg visszakapcsoltam a kétlépcsős azonosítást, mivel windows 10-es localhostról a levélküldés hibátlanul megy, tehát van egy 16 karakteres jelszó az alkalmazáshoz. "E-mail a saját Windowsos számítógép eszközön -1 db jelszó ". Jelenleg ez van.


    A Google leírása szerint:

    "
    1. A „Bejelentkezés a Google-ba” részben válassza az Alkalmazásjelszavak elemet.

    Az alkalmazásjelszavak segítségével olyan eszközök alkalmazásaiban is beléphet Google-fiókjába, amelyek nem támogatják a kétlépcsős azonosítást. Csak egyszer kell majd megadnia az alkalmazásjelszót, így nem kell rá emlékeznie.

    Válassza ki azt az alkalmazást és eszközt, amelyhez alkalmazásjelszót szeretne generálni.

    "

    Alkalmazás:  E-mail (tehát nem Naptár, Névjegy, Youtube stb)

    Válassza ki az eszközt: Nos, itt kezdődnek a gondok, mert csak ezek állnak rendelkezésre: "Iphone, Ipad, BlacBerry, mac, Windows Phone, Windows-os számítógép, Egyéb (egyéni név)".

    És weboldal mint lehetőség hol van? Sehol nincs.

    Tehát egy weboldalhoz csak az Egyéb (egyéni név) lehetőség jöhetne szóba. És ugyan mit írjak itt be? Próbáltam a weboldal címet többféleképpen is, de teljesen hatástalan, vagy fogyatékos vagyok :))

    Tehát, ha azt mondod neked működik, mit állítottál be ezen a helyen? Egészen pontosan mit adtál meg ezen a helyen?

    Tekintettel arra, hogy kétlépcsős azonosítással localhostról az email küldés hibátlanul működik, fel kell tételeznem, hogy weboldalra is kell hogy létezzen egy ilyen beállítás kombináció kétlépcsős azonosításhoz is, csak meg kell adni pontosan.

    Mondom, alaposan végignéztem, és jelszónál, majd CREDENTIALS-nál akad ki az SMTP kapcsolat, majd ki is léptet onnan, az e-mail küldés sikertelen. Ha  CREDENTIALS-t false kapcsolom, akkor kimegy az e-mail, de SPAM mappába kerül.

    És még egyszer mondom: Windows-os localhoston ugyanez a PHP hibátlanul elküld minden emailt és nem megy SPAM-be se a levél.
    Mutasd a teljes hozzászólást!
  • 1. Kevésbé biztonságos alkalmazások engedélyezése: BEKAPCSOLVA

    2. Kétlépcsős azonosítás: Ki

    3. Futtasd le a kódot, amit írtam. Nem fog működni.

    4. Adjon hozzáférést Google Fiókjához: Folytatás

    5. Futtasd le újra a kódot, amit írtam. Működik.
    Mutasd a teljes hozzászólást!
  • Kipróbáltam. Úgy ahogy mondtad:

    4. pontban:

    Fiókhozzáférés engedélyezve

    Próbáljon meg ismét bejelentkezni Google Fiókjába az új eszközről vagy alkalmazásból.

    Újra lefuttattam, és így sem megy az email:

    SMTP 220-as kapcsolódás után

    .......

    2021-06-11 21:48:08 CLIENT -> SERVER: [credentials hidden]
    2021-06-11 21:48:10 SERVER -> CLIENT: 535 Incorrect authentication data
    2021-06-11 21:48:10 SMTP ERROR: Password command failed: 535 Incorrect authentication data
    SMTP Error: Could not authenticate.
    2021-06-11 21:48:10 CLIENT -> SERVER: QUIT
    2021-06-11 21:48:10 SERVER -> CLIENT: 221 ...... closing connection
    SMTP Error: Could not authenticate.
    Error in sending email. Mailer Error: SMTP Error: Could not authenticate.

    -------------

    És mégvalami. Sokatmondó, hogy mi a különbség a localhost-on és weben futás között:


    localhoston: 2021-06-11 21:55:06 SERVER -> CLIENT: 235 2.7.0 Accepted


    weboldalon: 2021-06-11 21:54:13 SERVER -> CLIENT: 535 Incorrect authentication data

    Ugyanazzal a felhasználónévvel és jelszóval két különböző folytatás!
    Mutasd a teljes hozzászólást!
  • Nem tudom, hogy mi lehet a probléma mert nálam azonnal működött és amikor összeírtam neked a lépéseket, akkor többször újra és újra teszteltem, hogy ne írjak butaságot.

    A kódot egyébként ez alapján írtam: GitHub
    Mutasd a teljes hozzászólást!
  • Azért köszönöm a fáradozásodat, de még nem adom fel. Az autentikáció a gyanús, ott kell keresgélnem.
    Mutasd a teljes hozzászólást!
  • Még annyit hozzáfűznék, hogy én localhost-on nem próbálkoztam, hanem egyből feltöltöttem egy cPanel-es osztott tárhelyre.

    Egyébként az is lehet, hogy a többszöri sikertelen próbálkozásod után bizonyos időre vagy netán örökre tiltásra került az IP-címed és ebben az esetben hiába lenne már minden jól beállítva.

    Ha van rá mód, akkor próbáld másik tárhelyen (másik IP-cím alól) tesztelni és lehetőleg másik e-mail címmel.
    Mutasd a teljes hozzászólást!
  • Localhost az otthoni geped? Pl. upc nel engedelyeztetni kell a 25-os portot.

    Portatiranyitas is kell, ha van router
    Mutasd a teljes hozzászólást!
  • Válassza ki az eszközt: Nos, itt kezdődnek a gondok, mert csak ezek állnak rendelkezésre: "Iphone, Ipad, BlacBerry, mac, Windows Phone, Windows-os számítógép, Egyéb (egyéni név)".

    Ennek nincs különösebb jelentősége. Egyébbel szépen kellene menjen.

    Mondom, alaposan végignéztem, és jelszónál, majd CREDENTIALS-nál akad ki az SMTP kapcsolat, majd ki is léptet onnan, az e-mail küldés sikertelen. Ha  CREDENTIALS-t false kapcsolom, akkor kimegy az e-mail, de SPAM mappába kerül.

    És még egyszer mondom: Windows-os localhoston ugyanez a PHP hibátlanul elküld minden emailt és nem megy SPAM-be se a levél.

    Vagy a script nem ugyanaz akkor, vagy a szerveren van valami furfang. Kicsit többet is bevághatnál az SMTP log-ből, hogy lássuk, mi van az elején. Biztos ugyanazzal a felhasználó/jelszóval próbálod?
    Mutasd a teljes hozzászólást!
  • A script és minden ugyanaz, lehet, hogy a tárhelyszolgáltató tilt le valamit. Eleve úgy kezdi, hogy:

    2021-06-11 22:20:35 SERVER -> CLIENT: 220- .......hu ESMTP Exim 4.94.2 #2 Sat, 12 Jun 2021 00:20:35 +0200 220-We do not authorize the use of this system to transport unsolicited, 220 and/or bulk e-mail.

    A többi szokványos sor:

    2021-06-11 22:20:35 CLIENT -> SERVER: EHLO ......
    2021-06-11 22:20:35 SERVER -> CLIENT: 250- .......
    2021-06-11 22:20:35 CLIENT -> SERVER: STARTTLS
    2021-06-11 22:20:35 SERVER -> CLIENT: 220 TLS go ahead
    2021-06-11 22:20:35 CLIENT -> SERVER: EHLO .....
    2021-06-11 22:20:35 SERVER -> CLIENT: 250- .....
    2021-06-11 22:20:35 CLIENT -> SERVER: AUTH LOGIN
    2021-06-11 22:20:35 SERVER -> CLIENT: 334 .......
    2021-06-11 22:20:35 CLIENT -> SERVER: [credentials hidden]
    2021-06-11 22:20:35 SERVER -> CLIENT: 334 ........
    2021-06-11 22:20:35 CLIENT -> SERVER: [credentials hidden]
    2021-06-11 22:20:37 SERVER -> CLIENT: 535 Incorrect authentication data
    Mutasd a teljes hozzászólást!
  • Nem tudom, miért pontpontpontozod ki a részleteket. Az SMTP szerver azt mondja neked, hogy ...hu EXIM? Biztosan a gmail-lel kommunikálsz te?
    Mutasd a teljes hozzászólást!
  • Próbáljátok ki másik pl. outlook, hotmail, yahoo smtp levelezővel. Ha ott is gáz, akkor vacak a tárhelyszolgáltató.
    Mutasd a teljes hozzászólást!
abcd