Právě je 20 dub 2024 16:09

Všechny časy jsou v UTC + 1 hodina [ Letní čas ]




Odeslat nové téma Odpovědět na téma  [ Příspěvků: 8 ] 
Autor Zpráva
 Předmět příspěvku: Funkce mail() - odesílání e-mailu s přílohou
PříspěvekNapsal: 17 čer 2015 16:58 
C4 zákazník

Registrován:
16 čer 2013 20:43
Příspěvky:
33
Dobrý den,

po minoritním upgrade na php 5.5 nám přestaly odcházet z php scriptu e-maily s přílohou PDF. Řešil jsem to s p. Horejskem, ale odkázal mne na Vás.
Pokud má e-mail přílohu PDF není doručen, pokud ji nemá, je normálně doručen. E-mailovou přílohu vytvářím pomocí MPDF a následně vytvořím header a odesílám funkcí mail().

V příloze je část kódu.

Prosím poraďte mi jak to spravit, je to od 15.6. a klienti jsou "nervózní" nedostávají zaplacené texty.

Děkuji předem za rychlou odpověď.


Přílohy:
ukazka_kodu.txt [2.7 KiB]
533 krát
Nahoru
 Profil  
 
 Předmět příspěvku: Re: Funkce mail() - odesílání e-mailu s přílohou
PříspěvekNapsal: 18 čer 2015 08:18 
C4 zákazník

Registrován:
18 čer 2015 08:04
Příspěvky:
5
Zdravím,
měl jsem stejný problém, použil jsem jako základ script z této stránky a už to zase běhá, ale podpora mi samozřejmě v tomhle nijak nepomohla...

http://webcheatsheet.com/php/send_email ... chment.php


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Funkce mail() - odesílání e-mailu s přílohou
PříspěvekNapsal: 18 čer 2015 13:07 
C4 podpora
C4 podpora

Registrován:
30 čer 2009 09:14
Příspěvky:
8504
Dobrý den,

děkujeme za uvedení řešení, určitě se bude hodit i ostatním uživatelům. S podobnými dotazy se, prosím, příště obracejte do našeho diskuzního fóra. Na e-mailové ani telefonické podpoře se problematikou obsahu nezabýváme.

_________________
Radek Plašil
Webhosting C4
https://www.c4.cz/


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Funkce mail() - odesílání e-mailu s přílohou
PříspěvekNapsal: 18 čer 2015 13:25 
C4 zákazník

Registrován:
16 čer 2013 20:43
Příspěvky:
33
Děkuji JiriS za rychlou a přesnou odpověď - vše již funguje bez problémů, jen to teď opravit na asi 10-ti webech... :)

Ještě jednou moc díky za pomoc.

Zdeněk


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Funkce mail() - odesílání e-mailu s přílohou
PříspěvekNapsal: 04 črc 2015 08:47 
C4 zákazník

Registrován:
16 čer 2013 20:43
Příspěvky:
33
Ještě jsem zjistil jeden závažný problém - pokud je e-mail v html formátu odesílán z webu s přílohou PDF na adresu na gmail.com přijde jako textový, tj. i přiložený pdf soubor není jako příloha, ale je v těle e-mailu, tedy nečitelný. Pokud ale nastavím na gmail.com automatické přeposlání na jinou adresu (ne na gmail.com) dojde na tu adresu v pořádku i s přílohou.

To je jeden problém a ten druhý je to, že pokud z webu odejdou dva e-maily v html za sebou tak první bez přílohy dojde na gmail.com v pořádku a druhý z přílohou PDF nedojde vůbec.
Vyzkoušel jsem snad všechno možné, ale nic nepomohlo. V čem by mohl být problém?

Odchozí e-maily jsem testoval na mail-tester.com a jsou v pořádku (skóre 8/10, nejsou považovány za spam). Podotýkám, že to dělá jen gmail.com, ostatní webmaily stejně jako např. Outlook jsou OK.
Před upgrage PHP to bylo v pořádku.
Díky předem za odpověď.


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Funkce mail() - odesílání e-mailu s přílohou
PříspěvekNapsal: 04 črc 2015 12:54 
C4 zákazník

Registrován:
18 čer 2015 08:04
Příspěvky:
5
Ano, na gmail jsem se setkal se stejným problémem. Po drobné úpravě kódu je již funkční, postnu celý zdrojový kód kde stačí do proměnné zadat pouze mail a cestu k příloze, ale až v úterý.


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Funkce mail() - odesílání e-mailu s přílohou
PříspěvekNapsal: 07 črc 2015 13:16 
C4 zákazník

Registrován:
18 čer 2015 08:04
Příspěvky:
5
Zde funkcni kod (posilam JPEGy), v tele staci odkomentovat verzi pro PDF a zakomentovat JPG (radek 16 a 18).

Do logu si zapisuje podarilo li se odeslat mail ci nikoli.

Kód:
<?php

//define path and filename           
$dir = './images/';
$file = 'picture.jpg';
                     
//define the receiver/sender of the email
$mail_to1 = "receiver@mail.com";
$mail_from = "sender@mail.com";
$sender_name = "SENDER NAME";

//define the subject of the email
$subject = 'subject';

//define file format
$format = 'image/jpeg;';
//use this for PDF document:
//$format = 'application/pdf;';

//define text
$text = "test";

//create a boundary string. It must be unique
//so we use the MD5 algorithm to generate a random hash
$random_hash = md5(date('r', time()));
//define the headers we want passed. Note that they are separated with \r\n
$headers = "From: $sender_name <$mail_from>\r\nReply-To: $mail_from\r\nMIME-Version: 1.0";

//add boundary string and mime type specification
$headers .= "\r\nContent-Type: multipart/mixed; boundary=\"".$random_hash."\"";
//read the atachment file contents into a string,
//encode it with MIME base64,
//and split it into smaller chunks
$attachment = chunk_split(base64_encode(file_get_contents($dir.$file)));
//define the body of the message.
ob_start(); //Turn on output buffering
?>

This is a multi-part message in MIME format.
--<?php echo $random_hash; ?>

Content-type:text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

<?php echo $text; ?>


--<?php echo $random_hash; ?>

Content-Type: <?php echo $format; ?>; name="<?php echo $file; ?>"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="<?php echo $file; ?>"

<?php echo $attachment; ?>

--<?php echo $random_hash; ?>--

<?php
//copy current buffer contents into $message variable and delete current output buffer
$message = ob_get_clean();
//send the email

//write log
$fp = fopen('maillog.txt', 'a');
fwrite($fp, "\nTrying to sent \n");

  if (mail( $mail_to1, $subject, $message, $headers )) {
    echo "<br>Sent ".$pole[0]." to ".$mail_to1;

    fwrite($fp, "Send OK ".date("Y-m-d H:i:s")." to ".$mail_to1);
    fwrite($fp, "\n");

  } else {
    echo "<br>Error1";
    fwrite($fp, "Send ERROR".date("Y-m-d H:i:s")." to ".$mail_to1);
    fwrite($fp, "\n");
  }

fclose($fp);
?>


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Funkce mail() - odesílání e-mailu s přílohou
PříspěvekNapsal: 14 črc 2015 15:22 
C4 zákazník

Registrován:
16 čer 2013 20:43
Příspěvky:
33
Díky moc za řešení, funguje perfektně, umí to poslat i více různých příloh v jednom e-mailu (např. PDF, ZIP, JPEG nebo jiné kombinace).

Ještě jednou moc děkuji.
Zdeněk


Nahoru
 Profil  
 
Zobrazit příspěvky za předchozí:  Seřadit podle  
Odeslat nové téma Odpovědět na téma  [ Příspěvků: 8 ] 

Všechny časy jsou v UTC + 1 hodina [ Letní čas ]


Kdo je online

Uživatelé procházející toto fórum: Žádní registrovaní uživatelé a 0 návštevníků


Nemůžete zakládat nová témata v tomto fóru
Nemůžete odpovídat v tomto fóru
Nemůžete upravovat své příspěvky v tomto fóru
Nemůžete mazat své příspěvky v tomto fóru
Nemůžete přikládat soubory v tomto fóru

Hledat:
Přejít na:  
cron
FTP Uploader
Staňte se naším zákazníkem!
Hledáme kolegy
PHP, MySQL Hosting
Návody pro C4

© 2009-2024 ČESKÝ WEBHOSTING s.r.o. Kontaktní e-mail: forum@c4.cz
Diskuzní fórum využívá technologie: phpBB, phpBB-SEO.com, phpBB.cz