Jump to content
  • 0

pomoc PHP Mail Send


Riko

Dotaz

Zdravím komunitu Pawna.cz.

 

Měl bych dotaz protože si fakt nevím rady, jak na to.

 

Na OS Linux s postfixem potřebuji odesílat maily. To funguje. Problém je ale někde jinde. 

Potřebuji vědět, proč mi tento kód neodesílá mail ve formátu HTML ale odesílá ho jako prostý text

    function sendmail($to,$subject,$message,$from = "[email protected]"){
        $predmet = mime_header_encode($subject);
        $autor = mime_header_encode("SA-MP Reálný Život");
        $headers  = 'MIME-Version: 1.0' . "\r\n";
        $headers .= "Content-Type: text/html; charset=UTF-8\r\n";
        $headers .= 'Content-Transfer-Encoding: 8bit'. "\r\n";
        $headers .= 'From: '.$autor.' <'.$from.'>' . "\r\n";
        mail($to,$predmet,$message,$headers);
    }

Zde je chybějící $message, která se nachází v jiném souboru:

            $content .= "<html>
                          <body>
                            <h2>Registrace</h2>
                            Děkujeme za vaší registraci.<br />
                            Pro potvrzení a aktivaci vašeho účtu klikněte na následující odkaz:<br /><br />
                            <a href='".DEF_WEBURL."account_verify/$random_key' target='_blank'>".DEF_WEBURL."account_verify/$random_key</a><br /><br />
                            <h3>".DEF_SITENAME."</h3>
                            <h4>".DEF_WEB."</h4>
                          </body>
                         </html>";
            mail($_POST['v1'],"Registrace Reálný Život",$content,"From: [email protected]");

Tento email odesílá ve formátu HTML, proč tomu tak je? Díky.

<?php
$to = '[email protected]';

$subject = 'Website Change Reqest';

$headers = "From: Reálný Život <[email protected]>\r\n";
$headers .= "Reply-To: ". strip_tags($_POST['req-email']) . "\r\n";
$headers .= "CC: [email protected]\r\n";
$headers .= "MIME-Version: 1.0\r\n";
$headers .= "Content-Type: text/html; charset=UTF-8\r\n";

$message = '<p><strong>This is strong text</strong> while this is not.</p>';


mail($to, $subject, $message, $headers);
php?>

Již funguje zapsáním kódu 

            $content .= "<html>
                          <body>
                            <h2>Registrace</h2>
                            Děkujeme za vaší registraci.<br />
                            Pro potvrzení a aktivaci vašeho účtu klikněte na následující odkaz:<br /><br />
                            <a href='".DEF_WEBURL."account_verify/$random_key' target='_blank'>".DEF_WEBURL."account_verify/$random_key</a><br /><br />
                            <h3>".DEF_SITENAME."</h3>
                            <h4>".DEF_WEB."</h4>
                          </body>
                         </html>";
            $headers = "From: Reálný Život <[email protected]>\r\n";
            $headers .= "MIME-Version: 1.0\r\n";
            $headers .= "Content-Type: text/html; charset=UTF-8\r\n";
            mail($_POST['v1'],"Registrace Reálný Život",$content,$headers);
            redirect("?registered");

Sice nechápu, proč to dříve fungovalo a teď to nefunguje, ale budiž.

Díky.

Link to comment
Share on other sites

2 odpovědí na tuto otázku

Recommended Posts

  • 0
  • Administrátor

Umí tvůj klient zobrazovat html emaily? Nemáš to přepnuté ? Případně zkus nějakou knihovnu než jen plain funkci.

Link to comment
Share on other sites

  • 0

Máš vytvořenou vlastní funkci (sendmail):

    function sendmail($to,$subject,$message,$from = "[email protected]"){
        $predmet = mime_header_encode($subject);
        $autor = mime_header_encode("SA-MP Reálný Život");
        $headers  = 'MIME-Version: 1.0' . "\r\n";
        $headers .= "Content-Type: text/html; charset=UTF-8\r\n";
        $headers .= 'Content-Transfer-Encoding: 8bit'. "\r\n";
        $headers .= 'From: '.$autor.' <'.$from.'>' . "\r\n";
        mail($to,$predmet,$message,$headers);
    }

ALE tvůj obsah, který máš v jinačím souboru odesíláš funkcí mail, kde do hlavičky uvádíš pouze "From: [email protected]". Žádné informace o tom co odesíláš.. to vše řeší ta tvá předvytvořená funkce, kterou nevědomky nepoužíváš...

            $content .= "<html>
                          <body>
                            <h2>Registrace</h2>
                            Děkujeme za vaší registraci.<br />
                            Pro potvrzení a aktivaci vašeho účtu klikněte na následující odkaz:<br /><br />
                            <a href='".DEF_WEBURL."account_verify/$random_key' target='_blank'>".DEF_WEBURL."account_verify/$random_key</a><br /><br />
                            <h3>".DEF_SITENAME."</h3>
                            <h4>".DEF_WEB."</h4>
                          </body>
                         </html>";
            sendmail($_POST['v1'],"Registrace Reálný Život",$content,"From: [email protected]"); //tady stačí změnit funkci mail na tvojí sendmail, samozřejmě ta funkce sendmail musí být includnutá v tom souboru 

Druhý kód ti funguje kvůli tomu, že máš správně zapsanou hlavičku, jelikož ji zapisuješ rovnou a ne přes svojí funkci (která by ji měla také správně, ale zapomněl jsi na ni :d ), takže se HTML zobrazuje korektně. 

Edited by GaRGoyLeS
  • Líbí se mi to! (+1) 1
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...