Autor Zpráva
Majkl578
Profil
Zdravím,
na problém jsem narazil před chvíli, když jsem při odpovědi na téma omylem zaškrtl kolonku "Oznámení na email".
Email mi přišel, ale byl poškozený.

Předmět: "Diskuse, p??sp?vek na t?ma: styl z?pisu php vs html".

Tělo mailu je v pořádku.

Email mám u seznam.cz.

S opravou problému by mohlo pomoci toto téma - FAQ v sekci PHP.
imploder
Profil
Majkl578:
Možná je to tím, že hlavička určující kódování je v kódu až po hlavičce předmětu. Měla by být co nejdřív.
DoubleThink
Profil *
imploder:
Možná je to tím, že hlavička určující kódování je v kódu až po hlavičce předmětu. Měla by být co nejdřív.
Kódování předmětu je nezávislé na těle mailu.
SwimX
Profil
Moderátor Chamurappi: Přesunuto z Sledování tématu emailem - Špatné kódování předmětu.

Přišel mi email:
Diskuse, p??sp?vek na t?ma: Odkazov?n? na soubor - php

text mailu byl v pořádku, zřejmě jen nějaká malá chybička ve skriptu.
SwimX
Profil
Mistr mi zamknul mé vlákno, tak se tedy ozvu tady :) Problém stále trvá!
Chamurappi
Profil
Reaguji na SwimXe:
Kdyby to někdo opravil, asi by se to sem napsalo.

function sendMail($email, $subject, $msg, $from_email, $errors_email) {
global $genEmailDisable;
// Function sends mail with return-path (if incorrect email TO specifed. Reply-To: and Errors-To: need contain equal addresses!
if (!isset($genEmailDisable) or $genEmailDisable != 1) {
$msg = str_replace("\r\n", "\n", $msg);
$php_version = phpversion();
$from_email = "From: $from_email\r\nReply-To: $errors_email\r\nErrors-To: $errors_email\r\nX-Mailer: PHP ver. $php_version\r\nContent-Type: Text/Plain;
  charset=iso-8859-2";
mail($email, $subject, $msg, $from_email);
}
}

Poraď mi, co na tom ↑ mám změnit a já to změním.
Alphard
Profil
Zkus tam vložit tohle, ale je to tak trochu manuálová alchymie, sám používám utf. Jinými slovy, snad dokumentace nelže.
$subject = "=?iso-8859-2?B?".base64_encode($subject)."?=";

Předpokladem je, že funkce dostane správný řetězec v kódování iso-8859-2.
Chamurappi
Profil
Reaguji na Alpharda:
To dává smysl. Ale není na texty lepší používat Quoted-printable než Base64?
Vrtá mi hlavou, proč si na diakritiku začali lidé stěžovat až po nasazení DJPW 1.5.
Str4wberry
Profil
Vrtá mi hlavou, proč si na diakritiku začali lidé stěžovat až po nasazení DJPW 1.5.

Už máme totiž tak dokonalou diskusi, že každý upozorňuje na kdejakou maličkost.
Alphard
Profil
Chamurappi:
Ale není na texty lepší používat Quoted-printable než Base64?
Uvažoval jsem o tom, ale zase by se musely ošetřovat některé znaky, dát tam base64 mi připadá jednodušší.

Řešila by to funkce quoted_printable_encode(), jenže ta je až v PHP 5.3, nebo imap_8bit(), ale zase nevím, jestli má diskuse IMAP funkce. Řešení tedy nabízí hromada vytvořených funkci, třeba v komentářích na PHP: quoted_printable_decode, ale těžko zaručit jejich správnost, když je nemám vyzkoušené.

Náhodně jsem vybral třeba tuhle, ale bojím, že by z toho vyšel ještě větší nesmysl.
if (!function_exists("quoted_printable_encode")) {
  /**
  * Process a string to fit the requirements of RFC2045 section 6.7. Note that
  * this works, but replaces more characters than the minimum set. For readability
  * the spaces and CRLF pairs aren't encoded though.
  */
  function quoted_printable_encode($string) {
        $string = str_replace(array('%20', '%0D%0A', '%'), array(' ', "\r\n", '='), rawurlencode($string));
        $string = preg_replace('/[^\r\n]{73}[^=\r\n]{2}/', "$0=\r\n", $string);

        return $string;
  }
}

$subject = "=?iso-8859-2?Q?".quoted_printable_encode($subject)."?=";
SwimX
Profil
Chamurappi:
Poraď mi, co na tom ↑ mám změnit a já to změním.
Sám používám to, co píše Alphard #7 ale s utf (taky vlastně opužívám přesně jeho skript z FAQu, lepší jsem nepotkal).

Vrtá mi hlavou, proč si na diakritiku začali lidé stěžovat až po nasazení DJPW 1.5.
Dřív jsem si nikdy email poslat nenechal :)
Chamurappi
Profil
Do sandboxu jsem teď přidal ošetření pomocí base64_encode. Jestli si někdo zaškrtnul posílání na e-mail v tomto vlákně, mělo by mu oznámení informující o tomto mém příspěvku dorazit již správně.


Reaguji na Str4wberryho:
Asi to tak bude.
SwimX
Profil
Zkusím to :)
Chamurappi
Profil
Reaguji na SwimXe:
Teď to tady zkoušíš?
SwimX
Profil
Chamurappi:
Ano prosím. Funguje to dobře :))
"Diskuse, příspěvek na téma: Diakritika v předmětu notifikačního emailu"

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

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