E-mail küldése PHP-ről SMTP-n keresztül (melléklettel). Levélküldés (SMTP vs. mail PHP) Levelek küldése smtp levelezőszolgáltatásokon keresztül

22.09.2022 hírek

Ahhoz, hogy egy adott weboldal hatékonyan és produktívan működjön, létrehozását a lehető legfelelősségteljesebben és körültekintőbben kell megközelíteni. Külön figyelmet érdemel az online áruház létrehozásához használt rendszer kiválasztása. Az a tény, hogy az áruk vagy szolgáltatások értékesítésére szakosodott kereskedelmi platformnak lehetővé kell tennie az összes szükséges funkcionalitás megvalósítását, és könnyen használhatónak kell lennie mind az oldalak karbantartásával és kitöltésével foglalkozó adminisztrátorok, mind az online áruházak ügyfelei számára. Sok ember és cég, akik szembesülnek azzal a kérdéssel, hogy válasszanak maguknak megfelelő CMS-t, megvizsgálják, hogy a Magento vagy az OkayCMS-t válasszák. Hasonlítsuk össze ezen weboldalmotorok jellemzőit és képességeit.

Amikor a saját webhelyén dolgozik, egy személynek vagy cégnek sok erőfeszítést kell tennie - csak ebben az esetben számíthat pozitív eredményekre és egy valóban hatékony eszköz megszerzésére. Az egyik alapvető kérdés, amelyet már a weboldal készítésének megkezdése előtt meg kell oldani, az lesz, hogyan válasszuk ki a legmegfelelőbb CMS-t. Ezután összehasonlítunk két CMS-t: a Joomlát vagy az OkayCMS-t, és figyelünk mindegyik jellemzőire.

A saját weboldal az egyik alapvető feltétele a hatékony, sikeres üzletmenetnek. A statisztikák egyértelműen azt jelzik, hogy nőtt a különféle áruk interneten keresztüli vásárlása és szolgáltatásrendelése. Ezt figyelembe véve a legtöbb kereskedelmi vállalat már tisztában van azzal, hogy saját weboldalra van szüksége. Az internetes forrás meglétének puszta ténye azonban nem elegendő ahhoz, hogy számoljunk annak hatékonyságával, jövedelmezőségével és várható üzleti előnyeivel.

Amikor saját webhely létrehozására vagy online áruház megnyitására készül, számos kérdést figyelembe kell vennie és elemeznie kell, valamint döntenie kell különféle feladatokat. Csak ebben az esetben számíthat arra, hogy projektje pozitív eredményeket hoz, és képes lesz teljes mértékben megfelelni az elvárásoknak. Az online áruház fejlesztésével kapcsolatos különféle kérdések közül kiemelt figyelmet érdemel a CMS kiválasztásának kérdése. Hogy könnyebben döntsön az optimális motor mellett, belül

Amikor egy leendő online áruház számára saját weboldalt terveznek létrehozni, meglehetősen nagyszámú ember, sőt értékesítésre szakosodott cég is nehéz és rendkívüli nehézségekkel néz szembe. fontos választás: melyik meglévő CMS-t válasszam? Ha azon gondolkodik, mit válasszon: PrestaShop vagy OkayCMS, javasoljuk, hogy olvassa el ezt a cikket, amelyben összehasonlítjuk ezt a két rendszert az internetes webhelyek, különösen az online áruházak létrehozásához.

Sokáig kerestem a megoldást, hogy ne a PHP mail() függvényén, hanem SMTP-n keresztül küldjek leveleket a felhasználóknak. levelezőszerverek. Az interneten nincs sok sokféle információ, és ami ott van, az nem egészen működik, vagy egyáltalán nem működik. Ezért mindent összeraktam, és saját kódot írtam, az oldalakon bemutatott kész kódok alapján.

Miért küldjön SMTP-n keresztül és nem levélben ()

A válaszom nagyon egyszerű – egy ideig a vírusok tonnányi levelet küldtek a szerveremen keresztül, ami ahhoz vezetett, hogy az IP-címemet számos levelező, különösen a gmail.com, BANÁLT, és ezzel összefüggésben a felhasználók leveleket kaphattak, így én alternatívát kellett keresnem, és megtaláltam - ez az SMTP

Érdekelheti, hogy az én forgatókönyvem miért jobb, mint másoké, amelyek a szabadban hevernek?! válaszolok

  1. Működik a Yandex, Rambler, Mail szolgáltatásokkal (a gmail nem tudott nyerni)
  2. Törölje a kódot. A beállításhoz csak módosítson néhány sort
  3. HTML formátumban küld e-maileket

Itt vannak a forgatókönyvem előnyei, amelyeket sehol nem találtam az interneten, de mindegyikből mindent elvettem, amire szükségem volt. Tehát nézzük a kódot.

Függvény smtpmail($mail_to, $subject, $message, $service="yandex") ( $config["smtp_charset"] = "windows-1251"; //üzenetkódolás. (vagy UTF-8 stb.) $config [ "smtp_from"] = "mashintop.ru"; //Az Ön neve – vagy a webhelye neve. A "Feladó" mezőben jelenik meg $config["smtp_debug"] = false; //Ha akarja a hibaüzenetek megtekintéséhez adja meg a true helyett a hamis értéket $config["smtp_port"] = "25"; // Munkaport. Ne módosítsa, ha nem biztos benne. if($service=="yandex") ( $config[ "smtp_searcher"] = "yandex. ru"; $config["smtp_email"] = " [e-mail védett]"; $config["smtp_username"] = "mashintop"; //Változtasd meg a postafiókod nevét. $config["smtp_host"] = "smtp.yandex.ru"; //kiszolgáló levelek küldésére $config[" smtp_password "] = "moi_parol"; //Jelszó módosítása ) elseif($service=="rambler") ( $config["smtp_searcher"] = "rambler.ru"; $config["smtp_email"] = " [e-mail védett]"; $config["smtp_username"] = "mashintop"; //Változtasd meg a postafiókod nevét. $config["smtp_host"] = "smtp.rambler.ru"; //kiszolgáló levelek küldésére $config[" smtp_password "] = "moi_parol"; //Jelszó módosítása ) elseif($service=="mail") ( $config["smtp_searcher"] = "mail.ru"; $config["smtp_email"] = " [e-mail védett]"; $config["smtp_username"] = "mashintop"; //Változtasd meg a postafiókod nevét. $config["smtp_host"] = "smtp.mail.ru"; //kiszolgáló levelek küldésére $config[" smtp_password "] = "moi_parol"; //Jelszó módosítása ) elseif($service=="gmail") ( $config["smtp_searcher"] = "gmail.com"; $config["smtp_email"] = " [e-mail védett]"; $config["smtp_username"] = "alexeybertram"; //Változtasd meg a postafiókod nevét. $config["smtp_host"] = "smtp.gmail.com"; //kiszolgáló levelek küldésére $config[" smtp_password "] = "moi_parol"; //Jelszó módosítása ) $header="Dátum: ".date("D, j M Y G:i:s")." +0700rn"; $header.="From: =?windows-1251?Q?".str_replace("+","_",str_replace("%","=",urlencode("".$config[" smtp_from"]."")))."?=<".$config["smtp_email"].">rn"; $header.="X-Mailer: A denevér! (v3.99.3) Professionalrn"; $header.="Válaszcím: =?windows-1251?Q?".str_replace("+","_",str_replace("%","=",urlencode(" ".$config["smtp_from"]."")))."?=<".$config["smtp_email"].">rn"; $header.="X-Priority: 3 (normál)rn"; $header.="Üzenetazonosító:<172562218.".date("YmjHis")."@".$config["smtp_searcher"].">rn"; $header.="Címzett: =?windows-1251?Q?".str_replace("+","_",str_replace("%","=",urlencode("")))."? =<$mail_to>rn"; $header.="Tárgy: =?windows-1251?Q?".str_replace("+","_",str_replace("%","=",urlencode("".$tárgy."") )))."?=rn"; $header.="MIME-verzió: 1.0rn"; $header.="Tartalom típusa: szöveg/html; charset=windows-1251rn"; $header.="Tartalom-átviteli kódolás: 8bitrn"; $smtp_conn = fsockopen("".$config["smtp_host"]."", $config["smtp_port"],$errno , $errstr, 10); if(!$smtp_conn) (kiírja a "kapcsolat a szerverekről nem sikerült"; fclose($smtp_conn); exit;) $data = get_data($smtp_conn); fputs($smtp_conn,"EHLO ". $ config["smtp_searcher"]."rn"); $code = substr(get_data($smtp_conn),0.3000); if($code != 250) ("EHLO hello error" nyomtatása; fclose($smtp_conn) ; exit; ) fputs($smtp_conn,"AUTH LOGINrn"); $code = substr(get_data($smtp_conn),0.3000); if($code != 334) (nyomtassa ki: "a szerver nem engedélyezte az engedélyezés megkezdését"; fclose ($ smtp_conn); exit;) fputs($smtp_conn,base64_encode("".$config["smtp_username"]."")."rn"); $code = substr(get_data($smtp_conn),0,3000) ; if ($code != 334) ("hiba a felhasználó elérésekor" nyomtatása; fclose($smtp_conn); exit;) fputs($smtp_conn,base64_encode("".$config["smtp_password"].""). "rn" ); $code = substr(get_data($smtp_conn),0,3000); if($code != 235) ("hibás jelszó" nyomtatása; fclose($smtp_conn); kilépés;) fputs($smtp_conn,"MAIL FROM:".$config["smtp_email"]."rn"); $kód = substr(get_data($smtp_conn),0,3000); if($code != 250) (print "a szerver megtagadta a MAIL FROM parancsot"; fclose($smtp_conn); exit;) fputs($smtp_conn,"RCPT TO:".$mail_to."rn"); $kód = substr(get_data($smtp_conn),0,3000); if($code != 250 ÉS $code != 251) (print "A szerver nem fogadta el az RCPT TO parancsot"; fclose($smtp_conn); exit;) fputs($smtp_conn,"DATArn"); $kód = substr(get_data($smtp_conn),0,3000); if($code != 354) (print "a szerver nem fogadta el az ADATOKAT"; fclose($smtp_conn); exit;) fputs($smtp_conn,$header."rn".$message."rn.rn"); $kód = substr(get_data($smtp_conn),0,3000); if($code != 250) ("hiba küldés levél" nyomtatása; fclose($smtp_conn); exit;) fputs($smtp_conn,"QUITrn"); fclose($smtp_conn); ) függvény get_data($smtp_conn) ( $data=""; while($str = fgets($smtp_conn,515)) ( $data .= $str; if(substr($str,3,1) == " " ) ( break; ) ) return $data; ) $text_email = " Ön most felvett egy hirdetést a mashintop.ru webhelyen. Itt megtekintheti
Az Ön kulcsa: ".$key."

Használva adott kulcsotÖn tudja kezelni a hirdetését.

"; $text_email .= " "; smtpmail(" [e-mail védett]", "A hirdetés kulcsa a mashintop.ru webhelyen", $text_email, "yandex"); //use Yandex smtpmail(" [e-mail védett]", "A hirdetés kulcsa a mashintop.ru webhelyen", $text_email, "mail"); //használja az e-mailt smtpmail(" [e-mail védett]", "A hirdetés kulcsa a mashintop.ru webhelyen", $text_email, "rambler"); //használja a rambler smtpmail(" [e-mail védett]", "A hirdetés kulcsa a mashintop.ru oldalon", $text_email, "gmail"); // de a gmail nem működik :(

Ez minden, a kész szkript a kezedben van, csak másold ki, változtasd meg a $config tömb értékeit, és minden jól fog működni.

Most nézzünk meg néhány elemet, amelyekre szeretnék összpontosítani.

Például az a hiba, amelyet akkor kapunk, amikor SMTP-n keresztül próbálunk küldeni a Google-nak. Kezdetben ezt a hibaszöveget látjuk:

Ha valami konkrétabbat szeretne látni, módosítsunk egy kicsit a kódon

Fputs($smtp_conn,"AUTH LOGINrn"); $kód = substr(get_data($smtp_conn),0,3000); echo $kód; if($code != 334) (nyomtassa ki: "a szerver nem engedélyezte az engedélyezés megkezdését"; fclose($smtp_conn); kilépés;)

És a végén egy nagyon konkrét hibát kapunk

530 5.7.0 Először ki kell adnia egy STARTTLS parancsot. x4sm16408296lbn.2 - gsmtp

Nem tudom, mit jelent pontosan, de úgy gondolom, hogy köze van a biztonságos, nem biztonságos kapcsolathoz. Még nem tudom, hogyan szabaduljak meg tőle, így a gmail jelenleg veretlen.

A PHP-ben meglehetősen népszerű a levélküldést automatizáló szkriptek használata. Ebben a cikkben egy egyszerű szkriptet fogunk megnézni, amely SMTP-n keresztül küld leveleket a címzetteknek ( Egyszerű levélátviteli protokoll ). Túl könnyű lenne csak erre a funkcióra korlátozni magunkat, a szkript támogatja a csatolmányokat is, azaz csatolhat pdf, txt ill. doc fájlt levelében.

A szkript beállítása meglehetősen egyszerű, csak a küldő bejelentkezési nevére és jelszavára van szükség Email ahonnan leveleket küldenek.

A script a km_smtp_class.php osztállyal működik, az osztályban az a jó, hogy támogatja a különböző SSL és TLS protokollokat, amelyek biztonságos adatátvitelt biztosítanak.

Itt van maga a script:

"smtp.mail.ru", "SMTP_port" => "25", "SMTP_email" => " [e-mail védett]", "SMTP_pass" => "1111111", "SMTP_type" => "null"); // A címzett e-mailje $Receiver = " [e-mail védett]"; // Üzenet tárgya $Subject = "E-mail küldése PHP-ről"; // Üzenet szövege (HTML-ben) $Text = "Szia!
Szkriptből küldött üzenet Mowshon Webhely: http://site"; // Melléklet a levélben - a fájl címe $Attachment = ""; /* $mail = new KM_Mailer(szerver, port, felhasználó, jelszó, típus); */ /* A típus lehet: null, tls vagy ssl */ $mail = new KM_Mailer($SenderConfig["SMTP_szerver"], $SenderConfig["SMTP_port"], $SenderConfig["SMTP_email"], $SenderConfig["SMTP_pass"], $ SenderConfig[" SMTP_type"]); if($mail->isLogin) ( // Fájl csatolása if($Attachment) ($mail->addAttachment($Attachment);) // További címzettek hozzáadása $mail->addRecipient( " [e-mail védett]"); $mail->addRecipient(" [e-mail védett]") ); // A címzettek listájának törlése $mail->clearRecipients(); $mail->clearCC(); $mail->clearBCC(); $mail->clearAttachments(); ) else ( echo "Hiba történt, miközben csatlakozik az SMTP szerverhez"; ) ?>

A szkript beállítása elsősorban a $SenderConfig tömbön alapul, itt kell megadnunk az SMTP:szerver, port, bejelentkezési és email jelszót. Leírjuk az egyes tömbkulcsokat:

SMTP_szerver – SMTP-szerver címe (egyéni cím a különböző e-mailekhez)

Mail.ru levél: smtp.mail.ru port: 25, 587 és 465 (SSL titkosítással)

Yandex mail: smtp.yandex.ru port: 25, 587 465 (SSL port)

Rambler mail: mail.rambler.ru port: 25, 587 465 (SSL port)

Yahoo levelezés: smtp.mail.yahoo.com SSL port: 465

(Ha a listán nem szereplő smtp szerverek címére van szükséged, írd meg kommentben)

SMTP_port – A fentiekben már leírtuk az egyes smtp szervereknél.

SMTP_email - felhasználó pontosabb lenne, de az egyértelműség kedvéért e-mailt írtam, megadjuk az email címet.

SMTP_pass – Az e-mail jelszava, amely értékként volt megadva az SMTP_email kulcsban


SMTP_type – Alapértelmezett NULL. A levelek küldésének protokollja. Protokollok: SSL és TLS

Mellékleteket adhat hozzá a levélhez úgy, hogy egyszerűen megadja a fájl teljes címét a $Attachment változóban (/var/patch/to/file/File.pdf)

Ha bármilyen kérdése van, írja meg őket az alábbi megjegyzésekben.

Az SMTP-n keresztüli levélküldés egy helyi szerverről lehetővé teszi, hogy tesztelje az üzenetek küldését egy helyi gépen található webhelyről, vagy egyszerűbben: egy helyi szerverről. Ehhez bármilyen levelezőszolgáltatást használhat: Yandex, Google vagy mail.ru.

Először is, az SMTP (Simple Mail Transfer Protocol) egy széles körben használt hálózati protokoll, amelyet az e-mailek TCP/IP-hálózatokon történő továbbítására terveztek. És minden népszerűnek van ilyen protokollja. postai szolgáltatások.

A helyi szerverek megjelenésével már nem kellett tárhelyszolgáltatót választani az egyes szkriptek vagy cms-rendszerek teljesítményének ellenőrzéséhez, és nem kellett fizetni érte. Sokkal egyszerűbb mindent tesztelni számítógépen, és akkor mindenkinek megmutathatja, hogy mit „csinált”.

Sok ilyen szerver már beépített szoftverés a levelekkel való munkához szükséges funkciókat, csak helyesen kell konfigurálnia.

Az ilyen levelek működőképességének ellenőrzéséhez a minimumra van szükség:

  • Az Openservert helyi szerverként használhatja.
  • És egy egyszerű szkript, aminek a sablonja lent található.
  • Bármilyen levelezőszervert használhat.

Php levelek küldése SMTP script beállításon keresztül

Szerkeszteni kell egy egyszerű szkriptsablont, amely alább másolható, vagy több száz hasonló oldalról letölthető.

Először is meg kell változtatnia néhány értéket a szkriptsablonban.
nak nek - váltani levelezési cím ahová az e-mail üzenetet küldik.
tantárgy - levél tárgya
üzenet — maga az üzenet vagy a levél törzse.

Példa a szkriptemre:

Természetesen egy kicsit kibővítheti a funkcionalitást, és a szkript megjelenítheti a levélküldésről szóló üzenetet. Bár valójában az SMTP szerver végzi a küldést, és a szkript csak az üzenetet generálja.

Például ezt írhatod:

Minden behelyettesített értéknek idézőjelben kell lennie, különben a szkript hibát dob. Ezt követően elmentheti a szkriptet a helyi szerver mappájába.

Például: domains/send/index.phpés kezdje el beállítani a levelek küldését az SMTP opensrerveren keresztül.

A levél bármely olyan címre érkezik, amely a szkriptben lesz megadva az érték helyett 'nak nek' , de ezt a levelet pontosan az openserver beállításainál megadott SMTP dolgozza fel és küldi el.

  1. A szerver indítása
  2. Nyissa meg az openserver modult a beállításokkal a „mail” menüben
  3. Az összes mezőt a képen látható módon kitöltjük, miközben a felhasználónevet, a feladó e-mail-címét és jelszavát egy valódi Yandex-postafiókból helyettesítjük.

Mentjük a beállításokat, és a szerver újraindítása után hozzáférhet a szkripthez. A „Saját webhelyek” mappából nyissa meg a „küldés” mappát, amelyben a korábban elmentett index.php szkript található.

Amint eléri ezt a szkriptet, egy új böngészőablakban információ jelenik meg, jelezve, hogy a szkript befejeződött.

Ezek után ellenőriznie kell Postafiók, akinek a címét megadták a szkriptben, megérkezett-e a levél.

Ha nincs ott, az azt jelenti, hogy valami nincs megfelelően beállítva, vagy a levél a spam mappába került.

Az összes többi beállítás hasonlónak tűnik, de csak abban az esetben további információ nem akadályozza meg.

Az SMTP mail ru-n keresztüli levélküldés beállításához egyszerűen le kell cserélnie a Yandex paramétereit a mail ru paraméterekkel.

És hogy ne építsenek újra minden alkalommal helyi szerver, a legjobb, ha különböző openserver profilokat konfigurál. Ennek módja az oktatóvideóban látható.

Ebben az esetben elegendő egyszerűen betölteni a profilt, és az ehhez a profilhoz megadott összes beállítás elérhető lesz a szerver újraindítása után. Nagyon kényelmes dolog, és nagyon egyszerűen működik.

Minden profilhoz (egyáltalán nem mindegy, hogy mi lesz a neve) saját beállításokat kell elvégezni, kivéve, ha természetesen más paraméterekkel rendelkező szkripteket, cms rendszereket és alkalmazásokat tervez használni.
Ha nem, akkor az alapértelmezett beállításokkal meg lehet oldani.

Ami az SMTP mail ru-t illeti, itt minden azonos.

A Yandex adatok mail ru adatokra módosulnak

Levelek küldése smtp google-n keresztül

A Google SMTP-n keresztüli levelek küldésének beállítása némi erőfeszítést igényel.

Először is, a profil létrehozása a Google-ban nehezebb, mint más Yandex és mail ru rendszerekben
Másodszor, a rendszer nem engedi át egyszerűen a levelet, még akkor sem, ha megadja a bejelentkezési adatait. Először is küld egy levelet, amelyben minden benne lesz szükséges információ további utasításokért.

Másképp A Google esetében pontosan ugyanígy van beállítva. Csak az összes adat változik.

Más SMTP-n keresztüli levélküldés konfigurálásához az összes adat megközelítőleg azonos lesz.

Ha minden rendben volt az Ön számára, és a levelek megérkeztek a megadott címzetthez, akkor minden helyesen történt. Jó lenne, ha megosztanád a tapasztalataidat kommentben.