#1 2015-08-25 16:37:23

blahapet74
Člen
Registrován: 2015-08-17
Příspěvky: 7

Nemožnost odeslání mailu s přílohou na doménách na Endoře

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

#2 2015-08-26 09:19:41

PetrAndel
Podpora
Registrován: 2015-07-27
Příspěvky: 522

Re: Nemožnost odeslání mailu s přílohou na doménách na Endoře

Dobrý den, o jakou doménu se jedná? Prověříme to

Offline

#3 2015-08-26 15:25:21

blahapet74
Člen
Registrován: 2015-08-17
Příspěvky: 7

Re: Nemožnost odeslání mailu s přílohou na doménách na Endoře

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

#4 2015-08-26 20:40:13

kksmirice
Endora rádce
Místo: Vrchovnice
Registrován: 2011-11-20
Příspěvky: 6,023
Web

Re: Nemožnost odeslání mailu s přílohou na doménách na Endoře

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

#5 2015-08-28 05:24:54

blahapet74
Člen
Registrován: 2015-08-17
Příspěvky: 7

Re: Nemožnost odeslání mailu s přílohou na doménách na Endoře

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

#6 2015-08-28 11:04:53

JF
Endora rádce
Místo: ....nice u Plzně
Registrován: 2010-06-22
Příspěvky: 11,939

Re: Nemožnost odeslání mailu s přílohou na doménách na Endoře

Odporúčam použiť phpmailer, príklad nájdete napríklad tu http://phpmailer.worxware.com/index.php?pg=exampleamail


Ján Fačkovec - Endora.cz by Webglobe
Email, Web, Webadmin, Webmail, Nápověda, Ceník

Offline

Zápatí

Založeno na FluxBB | CZ a SK