ugrás a tartalomhoz

smtp levélküldés php

kicsién · 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.
<?php
require 'class.phpmailer.php';
 
$mail = new PHPMailer;
$mail->isSendmail();                                      // Mail küldés Sendmail használatával
$mail->SMTPAuth = true;                                   // SMTP autentikáció
$mail->Username = 'webmaster##kukac##testdomain.hu';              // SMTP felhasználónév
$mail->Password = 'password';                             // SMTP jelszó
$mail->setFrom('webmaster##kukac##testdomain.hu', 'Webmaster');   // Küldő cím
$mail->addAddress('user##kukac##example.com', 'User');            // Címzett
$mail->Subject = 'PHPMailer teszt';                       // A levél tárgya
$mail->Body    = 'Teszt';                                 // A levél törzse
 
if(!$mail->send()) {
    echo 'A levél nem küldhető el.';
    echo 'PHPMailer hiba: ' . $mail->ErrorInfo;
} else {
    echo 'A levél elküldve.';
}?>
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 · 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 · Feb. 8. (Cs), 16.33
Szia, köszi a választ.

A hiba ebben van: '
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.
(namespace PHPMailer\PHPMailer;
)
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 · 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 · Feb. 8. (Cs), 17.03
Sikerült megcsinálnom, (máshonnan másolnom)


<?php
require("PHPMailer_5.2.0/class.phpmailer.php");

$mail = new PHPMailer();

$mail->IsSMTP();                                      // set mailer to use SMTP
$mail->Host = "Host";  // specify main and backup server
$mail->SMTPAuth = true;     // turn on SMTP authentication
$mail->Username = "smtp mail";  // SMTP username
$mail->Password = "password"; // SMTP password

$mail->From = "smtp mail";
$mail->FromName = "name";

$mail->AddAddress("címzett mail");                  // name is optional


$mail->WordWrap = 50;                                 // set word wrap to 50 characters

$mail->IsHTML(true);                                  // set email format to HTML

$mail->Subject = "Here is the subject";
$mail->Body    = "This is the HTML message body <b>in bold!</b>";
$mail->AltBody = "This is the body in plain text for non-HTML mail clients";

if(!$mail->Send())
{
   echo "Message could not be sent. <p>";
   echo "Mailer Error: " . $mail->ErrorInfo;
   exit;
}

echo "Message has been sent";
?>


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 · 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.
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