ugrás a tartalomhoz

smtp levélküldés php

kicsién · 2018. Feb. 7. (Sze), 14.12
Sziasztok

A következő problémával fordulok hozzátok. Weboldalról smtp levélküldéssel még nem dolgoztam, pedig most erre lenne szükségem.

A github oldalról le is töltöttem a phpmailert, és van is egy kis példa programom de itt el is akadt a dolog.
  1. <?php  
  2. require 'class.phpmailer.php';  
  3.    
  4. $mail = new PHPMailer;  
  5. $mail->isSendmail();                                      // Mail küldés Sendmail használatával  
  6. $mail->SMTPAuth = true;                                   // SMTP autentikáció  
  7. $mail->Username = 'webmaster##kukac##testdomain.hu';              // SMTP felhasználónév  
  8. $mail->Password = 'password';                             // SMTP jelszó  
  9. $mail->setFrom('webmaster##kukac##testdomain.hu''Webmaster');   // Küldő cím  
  10. $mail->addAddress('user##kukac##example.com''User');            // Címzett  
  11. $mail->Subject = 'PHPMailer teszt';                       // A levél tárgya  
  12. $mail->Body    = 'Teszt';                                 // A levél törzse  
  13.    
  14. if(!$mail->send()) {  
  15.     echo 'A levél nem küldhető el.';  
  16.     echo 'PHPMailer hiba: ' . $mail->ErrorInfo;  
  17. else {  
  18.     echo 'A levél elküldve.';  
  19. }?>  
A probléma, hogy amikor megadom a kért adatokat (e-mail amelyikről küldeni szeretném, jelszó stb) működne a program de nem találja a phpmailer.php -t . A phpmailert a githubról való letöltés után egybe mappástól feltöltöm a szerverre de itt el is akad a dolog.

Hibaüzenet: Warning: require(class.phpmailer.php) [function.require]: failed to open stream: No such file or directory in /massage.php on line 2

A hibaüzenet szerint nem találja a phpmailer.php fájlt. Viszont az összes általam talált odlalon azt írják hogy a letöltött phpmailer-t változtatás nélkül töltsem fel a szerverre.



Tudnátok egy kis fényt gyújtani mert eléggé elakadtam.

Köszönöm
 
1

Hibakeresés

Hidvégi Gábor · 2018. Feb. 7. (Sze), 14.42
Ajánlom figyelmedbe az Egyszerű hibakeresés című cikket, abban választ találsz a problémádra.
2

hibakeresés

kicsién · 2018. Feb. 8. (Cs), 16.33
Szia, köszi a választ.

A hiba ebben van: '
  1. require class.phpmailer.php  
';

Nem találja a phpmailer.php-t, viszont ha megváltoztatom az elérési útvonalat akkor a phpmailer.php ben talál újabb hibát.
  1. (namespace PHPMailer\PHPMailer;  
  2. )  
Rengeteg oldalon tárgyalják a phpmailer működését de sajnos nem tudtam élesben alkalmazni.

A linket köszönöm, hasznosnak találom pl a firebugot is és használni is fogom rendszeresen.
3

Verziók

Hidvégi Gábor · 2018. Feb. 8. (Cs), 16.57
Ehhez jó lenne tudni a futtatott php verzióját, bár a névterek már elég régóta benne vannak. Ezt úgy tudod leellenőrizni, hogy csinálsz egy fájlt, amiben csak ennyi van: <?php phpinfo(); ?>.

Más részről én például egy régi PHPMailert használok, 2009-es, 5.1-es verzió, és mind a mai napig tökéletesen működik (a levélküldés nem igazán változott már jóideje). Szóval csak nyugodtan.
4

Siker

kicsién · 2018. Feb. 8. (Cs), 17.03
Sikerült megcsinálnom, (máshonnan másolnom)
  1. <?php  
  2. require("PHPMailer_5.2.0/class.phpmailer.php");  
  3.   
  4. $mail = new PHPMailer();  
  5.   
  6. $mail->IsSMTP();                                      // set mailer to use SMTP  
  7. $mail->Host = "Host";  // specify main and backup server  
  8. $mail->SMTPAuth = true;     // turn on SMTP authentication  
  9. $mail->Username = "smtp mail";  // SMTP username  
  10. $mail->Password = "password"// SMTP password  
  11.   
  12. $mail->From = "smtp mail";  
  13. $mail->FromName = "name";  
  14.   
  15. $mail->AddAddress("címzett mail");                  // name is optional  
  16.   
  17.   
  18. $mail->WordWrap = 50;                                 // set word wrap to 50 characters  
  19.   
  20. $mail->IsHTML(true);                                  // set email format to HTML  
  21.   
  22. $mail->Subject = "Here is the subject";  
  23. $mail->Body    = "This is the HTML message body <b>in bold!</b>";  
  24. $mail->AltBody = "This is the body in plain text for non-HTML mail clients";  
  25.   
  26. if(!$mail->Send())  
  27. {  
  28.    echo "Message could not be sent. <p>";  
  29.    echo "Mailer Error: " . $mail->ErrorInfo;  
  30.    exit;  
  31. }  
  32.   
  33. echo "Message has been sent";  
  34. ?>  
Most a probléma, hogy egyből spambe rakta a levelet, de ez sok minden miatt lehet gondolom.

A másik probléma amit még meg kell oldanom, hogy a címzetteket adatbázisból szedje ki bizonyos feltételek alapján.
5

spam mappa

Pepita · 2018. Feb. 9. (P), 11.36
Most a probléma, hogy egyből spambe rakta a levelet, de ez sok minden miatt lehet gondolom.
Nagyon sok oka lehet, ennyi infóból nem igazán lehet tippelni.

a címzetteket adatbázisból szedje ki
Definiálni kéne pontosan a célt, kiknek milyen jellegű emailt akarsz küldeni, egyszerre mennyit, hányszor, stb.

- Amíg csak kísérletezel, addig javaslom, hogy egy gmail accountot használj küldőnek, el lehet érni smtp-n, viszont a from cím kötött, az az account címe marad (nem véletlenül. :) )
- $mail->Body tartalma legyen valid HTML email tartalom. Gugli első találata (nekem) email validátort keresve.
- 28. sorban (hibánál) nyitsz egy bekezdést <p>, amit nem zársz le. Előtte pedig tag nélkül írsz a kimenetre.
- $mail->WordWrap szerintem szabvány szerint 70, nem értem, miért 50-re állítod.

Ha valamiféle ügyfélkezelés, e-marketing a cél, akkor erre vannak nagyon jó meglévő szolgáltatások is, konkrétan spammeléssel kár kísérletezni, mert még jó erős büntetést is össze lehet szedni, azon túl, hogy blacklistes lesz a küldő szerver. Magyarul tuti nem éri meg.
Ha felhasználóknak szánt egyedi értesítések (pl elfelejtett jelszó funkció, stb), akkor gyanítom, hogy először azt az alkalmazást kéne rendesen megcsinálni.
  1. require("PHPMailer_5.2.0/class.phpmailer.php");   
Ebben tudod mi a különbség az elsőhöz képest?
Rossz volt az elsőben az elérési út, aszerint a phpmailer-nek a te scripteddel azonos könyvtárban kellett volna lennie, viszont nem ott van, hanem a 'PHPMailer_5.2.0' mappában.
Erre érdemes odafigyelni, hogy mit hova "töltesz le".

Van egy olyan cucc is, úgy hívják, hogy composer, ennek használatával bármilyen csomag használatához csak az 'xxx/yyy/vendor/autoload.php' - t kell behúznod, minden mást kitalál magától, hogy hol van.

A phpmailer-t pedig mindenféle letöltés-elhelyezés-nemtalálás problémák helyett ennyi telepíteni:
composer require phpmailer/phpmailer