[přeskočit k obsahu]

Funkce mail v PHP pod Windows

Pokud používáte webserver Apache a PHP ve Windows, možná jste narazili na problém s nefunkčním odesíláním e-mailů pomocí funkce mail(). Já jsem tento problém řešil nedávno.

Funkce mail mi totiž vracela pokaždé návratovou hodnotu true, tedy úspěšné odeslání. Přitom v logu mého SMTP serveru nebyl vůbec záznam o odeslání. Proto jsem hledal a našel řešení pomocí balíku sendmail. V zásadě jde o to, že nainstalujeme tento balík a pomocí něj budeme e-maily odesílat.

Samozřejmě v první řadě musíme mít nainstalovaný SMTP server nebo mít k dispozici nějaký externí. Já používám MailEnable, který je v jedné z verzí zdarma.

Jak tedy zprovoznit PHP funkci mail() ve Windows?

  1. Stáhněte si balík sendmail.zip z adresy http://glob.com.au/sendmail/.
  2. Rozbalte ho do nějakého adresáře na disku. Raději použijte kratší názvy adresářů, například c:\apache\sendmail\, dlouhé názvy by mohly způsobit problémy.
  3. Otevřete si konfigurační soubor php.ini v textovém editoru a upravte ho následujícím způsobem (po provedení změn soubor samozřejmě uložte):
    [mail function]
    ; For Win32 only.
    ;SMTP =

    ; For Win32 only.
    ;sendmail_from =

    ; For Unix only.  You may supply arguments as well (default: "sendmail -t -i").
    sendmail_path = "C:\apache\sendmail\sendmail.exe -t"

    ; Force the addition of the specified parameters to be passed as extra parameters
    ; to the sendmail binary. These parameters will always replace the value of
    ; the 5th parameter to mail(), even in safe mode.
    ;mail.force_extra_paramaters =
  4. Nyní si otevřete v textovém editoru soubor sendmail.ini (nachází se v adresáři, kam jste rozbalili balík sendmail). Editujte několik nejdůležitějších polí (první dvě povinně, jedná se o nastavení Vašeho SMTP serveru, zbytek volitelně, ale doporučuji nastavit hlavně logy, kde můžete dohledat případné chyby). Po editaci soubor samozřejmě opět uložte:
    [sendmail]

    smtp_server=vas.smtp.server

    smtp_port=25

    default_domain=yourdomain.com

    error_logfile=sendmail_error.log

    debug_logfile=sendmail_debug.log
  5. Restartujte server Apache (stačí restart služby, případně restart počítače) a po restartu by mělo být vše v pořádku a funkce mail by měla odesílat e-maily tak, jak má.

 

Pozn.: Při psaní článku bylo čerpáno ze stránky http://php.net/manual/en/ref.mail.php, kde je tento návod v rozšířené podobě uveden v angličtině.

 

Komentáře k článku

Přidat komentář

Jméno:

Web:

Předmět:

Komentář:

Ochrana proti spamu:

Výsledek příkladu napište do pole.

6 + 7 =

K článku zatím nebyl vložen žádný komentář.

AKTUALITY

2. 12. 2011

Prodej i pronájem kopírovacích a tiskových multifunkčních strojů značky Sharp.

[více informací…]

16. 6. 2010

Nabízím záchranu a obnovu dat z poškozených médií profesionálním odborníkem. Sleva 10 % na každou záchranu dat!

[více informací…]

 

facebookNavštivte mou stránku
také na Facebooku!

rssOdběr novinek
pomocí RSS…

 

Přihlásit k odběru novinek:

Korektury bakalářských a diplomových prací!

Nabízím kompletní korektury školních prací s výraznými slevami pro studenty!

• pravopisné a stylistické chyby
• číslování, nadpisy
• titulky obrázků
• citace a další.

Proč nemít diplomku lepší než ostatní? ;-)

(akce platí do odvolání)

nahoru