Autor Zpráva
Janny
Profil *
Ahoj,
mohl by mi prosím dát někdo odkaz na zpracované odeslání mailu z webu, ve kterém jsou vyřešeny následující věci:

1. správné zobrazování češtiny i v předmětu mailu
2. možnost odesílání přílohy
3. ochrana proti spamovacím robotům
tiso
Profil
1. - 2. http://pear.php.net/package/Mail
Janny
Profil *
možná bych se spokojil i s 1. podmínkou, kdyby to bylo spolehlivě udělané
djlj
Profil
Nestačil by http://vsevjednom.cz/?page=formular?
Janny
Profil *
NE, dobrá, slevuji ze svých požadavků:

Chci skriptík, který umí odeslat mail se správnou diakritikou z formuláře na stránce s kódováním charset=windows-1250 a to jak v těle zprávy, tak v předmětu. Musí tam být možnost vložit mail odesílatele.

Děkuju a těším se ;-)
Alphard
Profil
http://tvorba-www.webz.cz/php/php/azphp360.htm
http://php.vrana.cz/kodovani-hlavicek-e-mailu.php

tady by mělo být všechno, html formulář snad poskládáš sama
DoubleThink
Profil *
Třída PHPMailer
Janny
Profil *
Je to takhle správně?

<form action="mail.html" method="post">
<input name="email" size="25" value="Váš e-ma@il"><br>
<input name="predmet" size="25" value="Předmět zprávy"><br>
<textarea name="zprava" rows="6" cols="55"></textarea><br>
<input type="submit" value="Odeslat">
</form>


<? php
$predmet = $_POST['predmet'];
$emailodesilatele = $_POST['email'];
$spam = $_POST['spam'];
$zprava = $_POST['zprava'];
$komu = "janue@seznam.cz";

function odesli_mail($komu, $predmet, $zprava) {
$hlavicka = "MIME-Version: 1.0 ";
$hlavicka.= "Content-Type: text/plain; charset="windows-1250" ";
$hlavicka.= "Content-Transfer-Encoding: base64 ";
$hlavicka.= "From: $emailodesilatele ";
$hlavicka.= "Reply-To: $emailodesilatele ";
$telo = Base64_Encode($zprava);
$predmet = zakoduj($predmet);
if(mail($komu, $predmet, $zprava, $hlavicka))
return TRUE;
else
return FALSE;

?>
Alphard
Profil
$spam = $_POST['spam']; je jaksi navíc :-)
nebylo by špatné ověřit to if (isset ($_POST['predmet'])) $predmet = $_POST['predmet']; atd.
$predmet = zakoduj($predmet); nemáš definovanou funkci zakoduj()
nepředáváš $emailodesilatele
funkci odesli_mail() musíš na závěr zavolat odesli_mail($komu, $predmet, $zprava)

jo a mezi <? a php se nedělá mezera, jenom <?php
Alphard
Profil
možná toho chceš moc najednou, začni na jednodušším příkladu a zkoušej postupně upravit

<?php
$predmet = $_POST['predmet'];
$emailodesilatele = $_POST['email'];
$zprava = $_POST['zprava'];
$komu = "janue@seznam.cz";

$hlavicky = "From: ".$emailodesilatele."\n";
$hlavicky .= "Reply-To: ".$emailodesilatele."\n";
$hlavicky .= "Content-Type: text/plain; charset=windows-1250\n";

if(mail($komu, $predmet, $zprava, $hlavicky))
echo "odesláno";
else
echo "nepodařilo se odeslat";
?>
Janny
Profil *
A co teď??
<pre>

<form action="mail.html" method="post">
<input name="email" size="25" value="Váš e-ma@il"><br>
<input name="predmet" size="25" value="Předmět zprávy"><br>
<textarea name="zprava" rows="6" cols="55"></textarea><br>
<input type="submit" value="Odeslat">
</form>


<?php
$predmet = $_POST['predmet'];
$emailodesilatele = $_POST['email'];
$zprava = $_POST['zprava'];
$komu = "janue@seznam.cz";

function zakoduj($text) {
return "=?utf-8?B?".base64_encode($text)."?=";
}

function odesli_mail($komu, $predmet, $zprava) {
$hlavicka = "MIME-Version: 1.0 ";
$hlavicka.= "Content-Type: text/plain; charset="windows-1250" ";
$hlavicka.= "Content-Transfer-Encoding: base64 ";
$hlavicka.= "From: $emailodesilatele ";
$hlavicka.= "Reply-To: $emailodesilatele ";
$telo = Base64_Encode($zprava);
$predmet = zakoduj($predmet);
if(mail($komu, $predmet, $zprava, $hlavicka))
return TRUE;
else
return FALSE;
odesli_mail($komu, $predmet, $zprava)
?>

</pre>
Janny
Profil *
to: Alphard

Oka, a jak do toho kusu kódu od tebe zakomponovat

function zakoduj($text) {
return "=?utf-8?B?".base64_encode($text)."?=";
}

respektive, jak zakódovat tu hlavičku?
Janny
Profil *
Takto?

<form action="mail.html" method="post">
<input name="email" size="25" value="Váš e-ma@il"><br>
<input name="predmet" size="25" value="Předmět zprávy"><br>
<textarea name="zprava" rows="6" cols="55"></textarea><br>
<input type="submit" value="Odeslat">
</form>


<?php
$predmet = $_POST['predmet'];
$emailodesilatele = $_POST['email'];
$zprava = $_POST['zprava'];
$komu = "janue@seznam.cz";

$hlavicky = "From: ".$emailodesilatele." ";
$hlavicky .= "Reply-To: ".$emailodesilatele." ";
$hlavicky .= "Content-Type: text/plain; charset=windows-1250 ";
function zakoduj($text) {
return "=?utf-8?B?".base64_encode($text)."?=";
}
$predmet = zakoduj($predmet);
if(mail($komu, $predmet, $zprava, $hlavicky))
echo "odesláno";
else
echo "nepodařilo se odeslat";
?>
Janny
Profil *
<form action="mail.html" method="post">
<input name="email" size="25" value="Váš e-ma@il"><br>
<input name="predmet" size="25" value="Předmět zprávy"><br>
<textarea name="zprava" rows="6" cols="55"></textarea><br>
<input type="submit" value="Odeslat">
</form>


<?php
$predmet = $_POST['predmet'];
$emailodesilatele = $_POST['email'];
$zprava = $_POST['zprava'];
$komu = "janue@seznam.cz";

$hlavicky = "From: ".$emailodesilatele." ";
$hlavicky .= "Reply-To: ".$emailodesilatele." ";
$hlavicky .= "Content-Type: text/plain; charset=windows-1250 ";
function zakoduj($text) {
return "=?utf-8?B?".base64_encode($text)."?=";
}
$predmet = zakoduj($predmet);
if(mail($komu, $predmet, $zprava, $hlavicky))
echo "odesláno";
else
echo "nepodařilo se odeslat";
?>


Už mi to funguje, ale došlý mail má opět místo diakritických znaků otazní ky :-(
Alphard
Profil
function zakoduj($text, $encoding = "utf-8") {
return "=?$encoding?Q?" . imap_8bit($text) . "?=";
}

$predmet = $_POST['predmet'];
$emailodesilatele = $_POST['email'];
$zprava = $_POST['zprava'];
$komu = "janue@seznam.cz";

$hlavicky = "From: ".$emailodesilatele."
";
$hlavicky .= "Reply-To: ".$emailodesilatele."
";
$hlavicky .= "Content-Type: text/plain; charset=windows1250
";

if(mail($komu, zakoduj ($predmet, "windows1250"), $zprava, $hlavicky))
echo "odesláno";
else
echo "nepodařilo se odeslat";


zkus odeslat e-mail, já neuvidím všechny chyby, když tam je syntaktická chyba, tak php označí řádek, když logická, tak se bude hledat podle důsledků
Alphard
Profil
tohle by mělo fungovat:



<form method="post">
<input name="email" size="25" value="Váš e-ma@il"><br>
<input name="predmet" size="25" value="Předmět zprávy"><br>
<textarea name="zprava" rows="6" cols="55"></textarea><br>
<input type="submit" value="Odeslat" name="odeslano">
</form>


<?php
if (isset($_POST['odeslano'])):

function zakoduj($text, $encoding = "utf-8") {
return "=?$encoding?Q?" . imap_8bit($text) . "?=";
}

$predmet = $_POST['predmet'];
$emailodesilatele = $_POST['email'];
$zprava = $_POST['zprava'];
$komu = "janue@seznam.cz";

$hlavicky = "From: ".$emailodesilatele."\n";
$hlavicky .= "Reply-To: ".$emailodesilatele."\n";
$hlavicky .= "Content-Type: text/plain; charset=windows1250\n";

if(mail($komu, zakoduj ($predmet, "windows1250"), $zprava, $hlavicky))
echo "odesláno";
else
echo "nepodařilo se odeslat";
endif;
?>
MarekOdehnal
Profil *
Děkuji všem za projevenou ochotu pomoci, především Alphard už to mám vyřešené, prosím o zamčení tématu.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: