• Rubrika: návody, úpravy systému 07.11.2009

    Na stránkách HC Litomyšl jsem potřeboval zřídit službu odesílání výsledků odehraných zápasů na několik mailových adres. Kontaktní formulář integrovaný do systému je velmi komfortní a se slušnou spamovou ochranou pomocí validačního kódu, nicméně pro naše potřeby potřebuje trochu poupravit ……
    Kde tedy začít?
    Jako první je potřeba vytvořit kopie souborů, kterých se to týká, jedná se o soubory:

    • contact.php - nazvěme si jej jak potřebujeme, třeba contact1.php je v hlavním adresáři  php fusion
    • includes/sendmail_include.php , opět název podobný sendmail.include1.php
    • locale/Czech/contact.php, opět podobně contact1.php

    V české mutaci si přepíšeme, nebo vložíme text, který předchází formuláři podle svých potřeb, můžeme použít i tagy html ke zvýraznění textu apod.

    Další úpravy závisí na našich potřebách:

    Potřebujeme - li maily odeslat na jinou adresu, než je nastavena v systému, nebo na více adres, musíme v souboru contact1.php ( root adresář) tyto adresy definovat. Jednu jako hlavního adresáta (třeba $mail0) a ostatní jako příjmemce kopií (třeba $mail1, $mail2,$mail3).

    kód vypadá asi takto:

    $mail0 = "mail01@ndr.cz";
    $mail1 = "mail02@seznam.cz";
    $mail2 = "mail03@gmail.com";
    $mail3 = "mail04@seznam.cz";
    $mailall = $mail1.", ".$mail2.", ".$mail3;

    Adresy sloučíme do řetězce, který si php mailer potom upraví.
    Další změnou v souboru contact1.php je změna připojeného souboru (sendmail_include.php na sendmail_include1.php) na řádku číslo přibližně 50.

    require_once INCLUDES."sendmail_include1.php";

    na dalším řádku:

    if (!sendemail($settings['siteusername'],$mail0,$mailname,$email,$subject, $message,$mailall)) {

    změníme z původního $settings['siteemail'] na $mail0 a za $message přibude další proměnná $mailall která určuje adresy příjmeců kopií mailu.
    Aby to však všechno fungovalo, ještě musíme upravit samotnou funkci sendemail, která je v souboru includes/sendmail-include1.php.
    Původní funkce sendmail_include.php totiž má proměnnou $cc určenou pro další mailové adresy, nastavenu jako prázdnou. Zde je ukázka:

    function sendemail($toname, $toemail, $fromname, $fromemail, $subject, $message, $type = "plain", $cc = "", $bcc = "") {

    a zde je upravená verze, která umožní portřebné adresy vložit:

    function sendemail($toname, $toemail, $fromname, $fromemail, $subject, $message, $cc, $type = "plain", $bcc = "") {

    Pokud provedeme všechny tyto úpravy, mělo by vše fungovat naprosto v pohodě.
    Ještě jedna maličkost:
    Pokud spravujeme více webů se systémem PHPFusion, je potřeba také rozlišit z jekého webu nám formulář na mail přijde, originální contact form totonemé ošetřeno.

    Uděláme to např. takto:
    V definici textu zprávy ($message) připojíme svůj popis:
    Ukázka:

    $message = 'Vysledkovy servis pomoci automatickeho formulare z webu hclitomysl.cz : ';
    $message .= descript(stripslash(trim($_POST['message'])));

    Najděte tedy řádek (asi kolem ř.35) s $ mesage a upravte kód podle vzoru…..

    Přidal J M @ 17:32

    Tagy:

  • Comments are closed.