Nejste přihlášeni
Ahoj, níže mám skript, který odešle mail s přílohou na předem zadaný mail. Problém je v tom, že ten samý, duplicitní soubor v pohodě odešle mail na Českém hostingu i třeba na Forpsi, ale tady na Endoře nikoliv a nezobrazí se ani žádná chybová hláška:
function encodeMailHeader ($string, $charset = 'iso-8859-2')
{
return sprintf ('=?%s?B?%s?=', strtoupper ($charset),base64_encode ($string));
}
function mail_attachment($filename, $path, $mailto, $from_mail, $from_name, $replyto, $subject, $message) {
$file = $path.$filename;
$file_size = filesize($file);
$handle = fopen($file, "r");
$content = fread($handle, $file_size);
fclose($handle);
$content = chunk_split(base64_encode($content));
$uid = md5(uniqid(time()));
$name = basename($file);
$header = "From: ".$from_name." <".$from_mail.">\n";
$header .= "Reply-To: ".$replyto."\n";
$header .= "MIME-Version: 1.0\n";
$header .= "Content-Type: multipart/mixed; boundary=\"".$uid."\"\n\n";
$header .= "This is a multi-part message in MIME format.\n";
$header .= "--".$uid."\n";
$header .= "Content-type:text/html; charset=iso-8859-2\n";
$header .= "Content-Transfer-Encoding: 7bit\n\n";
$header .= $message."\n\n";
$header .= "--".$uid."\n";
$header .= "Content-Type: application/octet-stream; name=\"".$filename."\"\n"; // use different content types here
$header .= "Content-Transfer-Encoding: base64\n";
$header .= "Content-Disposition: attachment; filename=\"".$filename."\"\n\n";
$header .= $content."\n\n";
$header .= "--".$uid."--";
mail($mailto, $subject, "", $header);
}
$email = "blahapet@seznam.cz";
$domain = "SONN s.r.o. - ".$_SERVER['SERVER_NAME']."";
$subject = "SONN - Vaše objednávka";
$email_from = "noreply@sonn.cz";
$zprava .= "<p>Test, test, test...</p>";
$path_to_file = $_SERVER['DOCUMENT_ROOT']."/prilohy/";
$name = "01.jpg";
mail_attachment($name, $path_to_file, $email, $email_from, encodeMailHeader($domain), $email_from, encodeMailHeader($subject), $zprava);
Funkce mail_attachment není z mojí hlavy a tak mě napadá, jestli tam je něco, co např. Endora nepodporuje apod.
Offline
Dobrý den, o jakou doménu se jedná? Prověříme to
Offline
Je to www.webhk.cz, ale nejde to na všech doménách na Endoře. Z Podpory mi napsali mail:
Dobrý den,
skript jsem vyzkoušel pustit s plnými právy přímo z příkazové řádky a vypsalo mi to následující:
Multiple or malformed newlines found in additional_header
při volání funkce mail() ve Vašem skriptu. mail() vrátil FALSE.
Po další odpovědi mi řekl že s tím nic neudělá, není programátor.
Offline
Zkusil bych odstranit vícenásobné odřádkování - viz chybové hlášení.
Popřípadě nahradit znak odřádkování proměnnou PHP_EOL
1. Murphyho zákon:
Na počátku nebylo nic. I to se pokazilo!
stránky: CMS test
kontakt - instalace systémů, MySQL, FTP přístup, ...
Instalační balíky vybraných CSM
Problémy spojené s provozem služeb Endora, řešte na tomto fóru.
Offline
Zkoušel jsem odstranit vícenásobné odřádkování a i poté s proměnnou PHP_EOL, avšak bez výsledku...
Poté jsem na internetu našel jiný skript, který zde na Endoře mail s přílohou odešle, ale zase do něho nemohu nacpat text, viz kód:
$path_to_file = $_SERVER['DOCUMENT_ROOT']."/prilohy/";
$name = "01.jpg";
$attachment_name = $path_to_file.$name;
$fp = FOpen ($attachment_name, 'r');
$contents = FRead ($fp, FileSize($attachment_name));
$contents = Chunk_Split(Base64_Encode($contents));
FClose ($fp);
$address = 'blahapet@seznam.cz';
$subject = 'Email s přílohou';
$headers = "From: Odesilatel <email.odesilatele@neco.cz>\n";
$headers .= "Reply-To: <email.odesilatele@neco.cz>\n";
$headers .= "MIME-Version: 1.0\n";
$headers .= "Content-Type: multipart/related; type=\"multipart/alternative\"; boundary=\""
."----=MIME_BOUNDRY_main_message\"\n";
$headers .= "X-Sender: Odesilatel <email.odesilatele@neco.cz>\n";
$headers .= "X-Mailer: PHP4\n";
$headers .= "X-Priority: 3\n"; //Priorita emailu 1 = Urgentni, 3 = Normalni
$headers .= "Return-Path: <email.odesilatele@neco.cz>\n";
$headers .= "This is a multi-part message in MIME format.\n";
$headers .= "------=MIME_BOUNDRY_main_message \n";
$headers .= "Content-Type: multipart/alternative; boundary=\""
."----=MIME_BOUNDRY_message_parts\"\n";
$message = "------=MIME_BOUNDRY_message_parts\n";
$message .= "Content-Type: text/plain; charset=\"iso-8859-2\"\n";
$message .= "Content-Transfer-Encoding: quoted-printable\n";
$message .= "\n";
$message .= "\n";
$message .= "\n";
$message .= "------=MIME_BOUNDRY_message_parts--\n";
$message .= "SEM MUZETE ZADAT TEXT EMAILU\n";
$message .= "------=MIME_BOUNDRY_main_message\n";
$message .= "Content-Type: application/octet-stream;\n\tname=\"" . $attachment_name . "\"\n";
$message .= "Content-Transfer-Encoding: base64\n";
$message .= "Content-Disposition: attachment;\n\tfilename=\"" . $attachment_name . "\"\n\n";
$message .= $contents; //Zakodovana priloha
$message .= "\n";
$message .= "------=MIME_BOUNDRY_main_message--\n";
//ODESLANI EMAILU
if (mail($address, $subject, $message, $headers))
{
print 'Email byl úspěšně odeslán.';
}
else
{
print 'Došlo k chybě!';
}
Chápu-li to dobře, tak na řádku: $message .= "SEM MUZETE ZADAT TEXT EMAILU\n"; má být text, ale ten se pak nezobrazí, nevíte někdo, co s tím?
Offline
Offline