Jak v PHP poslat e-mail s přílohou
Vedle uploadu souboru na server se mi v e-mailové schránce objevovaly i dotazy na poslání nějakého souboru e-mailem. Dnešním článkem se pokusím všem, co mi psali, dát odpověď. Uvedu jednoduchý skript, který uživateli umožní vedle zadání e-mailové adresy, také výběr souboru, který bude chtít poslat. Vybraný soubor se zadaným textem zprávy bude odeslán na danou e-mailovou adresu.
Nejprve malé zopakování
Standardní funkcí pro odeslání e-mailu ze skriptu je funkce mail. Její syntaktický zápis vypadá následovně:
|
První tři argumenty jsou povinné. Jsou jimi adresa, komu se e-mail posílá (To), druhý představuje název dopisu (Subject) a třetí vlastní tělo dopisu (Message). Další dva parametry jsou již nepovinné. Prvním jsou přídavné hlavičky (např. X-Web, X-Office, X-Mailer, apod.) a posledním parametry. Příklad použití funkce mail je následující:
|
Když chceme s e-mailem poslat i přílohu
Pokud chceme poslat i přílohu, pak nám jenom funkce mail nestačí. Nejprve musíme použít funkci imap_mail_compose pro sestavení MIME dopisu. Funkce vypadá následovně:
|
Funkce má dva parametry. Prvním z nich jsou hlavičky (Envelope) a druhý parametr je vlastní tělo (Body) specifikující jednotlivé části dopisu. Oba argumenty jsou typu pole.
Formulář
Nejprve uvedu formulář, který bude sloužit uživateli k tomu, aby mohl napsat dopis a připojit k němu jeden soubor.
|
Uvedený kód zobrazí na stránce následující formulář:
Skript send.php
Uživatel vyplní odesílatele a příjemce, napíše vlastní obsah zprávy a vybere soubor jako přílohu. Po stisku tlačítka Odeslat skript send.php vytvoří pomocí funkce imap_mail_compose MIME dopis, a teprve poté s použitím funkce mail pošleme e-mail i s vybranou přílohou. Skript samozřejmě ošetří i případ, že žádna příloha vybrána nebyla. Následuje celý kód skriptu send.php, bližší popis uvedu formou komentářů přímo ve skriptu.
|
Spuštění skriptu
Tento skript jsem zprovoznil a otestoval na IIS 5.0 a PHP 4.0.6. Ke stažení je k dispozici zde. Pokud se vám stane, že vám skript nebude fungovat (bude se vypisovat hláška, že nezná funkci imap_mail_compose), zkontrolujte si nejprve nastavení v souboru php.ini:
- zdali máte nastaveny správně direktivy SMTP a sendmail_from v bloku „mail function“. (důležité pro funkci Mail)
- dále si zkontrolujte a případně nastavte direktivu file_uploads=On
- v bloku „Paths and Directories“ nastavte direktivu extension_dir na adresář, ve kterém máte rozšiřující DLL knihovny, zpravidla extension_dir=“C:\PHP\extensions“ – kdyby jste pochybovali o jaký adresář jde, je to ten, v němž se vyskytuje soubor php_imap.dll – to je právě knihovna, bez níž vám nebude fungovat funkce imap_mail_compose.
- ve stejném bloku nastavte (pokud již tak není) direktivu enable_dl=On
- nakonec najděte odstavec Windows extensions a odkomentujte řádek s textem extension=php_imap.dll (tj. odstraňte středník ze začátku řádku)
Po splnění všech kroků by vám měla ve skriptu fungovat funkce imap_mail_compose. Příloha se pošle jako binární bez ohledu na to, jestli je poslán text, nebo obrázek. Skript se dá samozřejmě rozšířit – podle MIME typu přiloženého souboru (zjistili byste v proměnné $soubor_type) byste mohli rovnou nastavit správný MIME typ přílohy. Toto je nejjednodušší skript, který posílá jen jednu přílohu. Pokud byste chtěli poslat příloh více, pak je řadíte za sebou do pole $body.
Upozorňuji, že ve skriptu není ošetřen uživatelský vstup a tedy dříve, než data ve skriptu zpracujete do e-mailové zprávy, je potřeba vstupní data zkontrolovat, zdali neobsahují nevhodná či nebezpečná data.
Starší komentáře ke článku
Pokud máte zájem o starší komentáře k tomuto článku, naleznete je zde.
Mohlo by vás také zajímat
-
Aktualizujete svoji .NET webovou aplikaci? Může se hodit app_offline.htm
10. července 2024 -
Thunderbolt 4 vs. OCuLink: Přišel čas na upgrade?
27. května 2024 -
ZONER Webmail jako první v Česku přináší BIMI s VMC
11. července 2024
Nejnovější
-
Jak rozšířit úložiště Macu za pětinovou cenu?
16. prosince 2024 -
Nové trendy v doménách pro osobní projekty – DIY, LIVING a LIFESTYLE
9. prosince 2024 -
Jak chránit webové stránky před Web/AI Scrapingem
27. listopadu 2024 -
Jaký monitor je nejlepší k novému Macu Mini?
25. listopadu 2024
eliska
Říj 17, 2010 v 18:39mohl bys te skontrolovat email jestli by sel ?
MaSo
Čvn 5, 2011 v 20:34Hmm, tento popis je orientován na Windows, PHP však většinou běží na unix systémech, např. Linux… Jak tedy tam s imap_mail_compose?
radek david
Pro 3, 2011 v 21:43ahoj jsem radek rad bych vas lepe poznal chodim na lide nebo fc pod adresou radekhunka75@seznam.cz pokud mate zajem tak se ozvete dekuji
sasa
Dub 10, 2012 v 20:14Byť je v povědomí velké části čtenářů komiks fenoménem až od 20. století, dají se předchůdci komiksu, které odpovídají jeho dnešnímu chápání, najít už v umění starověkého Egypta. Byly nalezeny nástěnné malby, pocházející ze 2. tisíciletí př. n. l., zaznamenávající pásem obrázků a textů proběhlé děje. Kresby podobného typu jsou známy i z předkolumbovské Ameriky.
Už od raně křesťanských dob se objevují iluminované rukopisy, jejichž charakter má ke komiksu velmi blízko. Výrazné ilustrace měly již Koptské a Irské rukopisy, velké bohatství iluminací se objevuje po přelomu tisíciletí. Významným středověkým komiksem je krumlovská Liber depictus, kde je text doprovodem obrazu, nikoli naopak jako v jiných manuskriptech. Čitelné originální řazení do panelů je vidět na tzv. Pařížském zlomku Dalimilovy kroniky, jinak je obvyklé řadit panely na šířku řádků pod sebe.
Za svého druhu komiks lze považovat například i tapisérii z Bayeux – rozsáhlé dílo vykreslující metodou kontinuální ilustrace (známou z Trajánova sloupu či egyptských a mezopotamských záznamů) příběh dobytí Británie Normany roku 1066. Tapisérie obsahuje kromě obrazu také doplňující texty, které byly i v knižní produkci obvyklé a často na sebe braly podobu tzv. mluvících pásek, svitků s přímou řečí vycházejících z hovořících postav.
Masové rozšíření kreslených seriálů bylo umožněno až vynálezem knihtisku. Už v roce 1460 vychází kreslené Utrpení svatého Erasma[zdroj?]. Ve své době bylo velmi oblíbené. Možná i proto, že brutalitou si nezadalo s dnešní undergroundovou produkcí.
obraz ze série Dráha prostitutky
Dalším mezníkem byly příběhy William Hogartha, jehož série obrazů Dráha prostitutky (1731) a Dráha zhýralce, později přepracované na série rytin, patřily k nejpopulárnějším tiskům své doby. Ochrana práv autora byla popudem k vývoji copyrightu.
Yellow Kid, titulní postava prvního moderního komiksu
O spojení sekvencí obrazů a písma, a vytvoření základu moderního komiksu se zasloužil Rodolphe Töpffer. Vydával přibližně v polovině 19. století řadu kreslených satirických příběhů. Své dílo bral ale jen jako zábavu a rozptýlení, nikoliv jako převratný vynález.
První moderní komiks však stvořil až v roce 1896 Richard Outcault, když publikoval v časopise New York World svůj strip Yellow Kid (Žluté dítě). Datum 16.2.1896 se také počítá jako „Den zrození komiksu“.