[php/email] Mail komt overal goed aan behalve bij de klant

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
We hebben een systeem gebouwd dat automagisch pdfjes genereerd en dan kunnen mensen deze toevoegen aan hun mapje. Met een druk op een button krijgen ze dan de geselecteerde attachments met een begeleidend mailtje thuisgestuurd.

Dit werkt allemaal prima, zowel op mac als op pc en we hebben totaal geen problemen ermee. Echter de klant ontvangt in zijn mailbox de bron van het mailtje, of in ieder geval een gedeelte ervan. Hieronder het stuk code dat van belang is:

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
function xmail($email_address, $attach_filepath, $email_from = "mailer@....nl", $subject = "", $msg = "") { 
        $b = 0; 
        $mail_attached = ""; 
        $boundary = md5(uniqid(time(),1))."_xmail"; 
        if (count($attach_filepath)>0) { 
           for ($a=0;$a<count($attach_filepath);$a++) { 
               if ($fp = fopen($attach_filepath[$a][0],"rb")) { 
                   $file_name = basename($attach_filepath[$a][0]); 
                   $content[$b] = fread($fp,filesize($attach_filepath[$a][0])); 
                   $mail_attached .= "--".$boundary."\r\n" 
                       . "Content-Type: application/pdf; name=\"" . $attach_filepath[$a][1] . "\"\r\n" 
                       . "Content-Transfer-Encoding: base64\r\n" 
                       . "Content-Disposition: inline; filename=\"" . $attach_filepath[$a][1] . "\"\r\n\r\n" 
                       .chunk_split(base64_encode($content[$b]))."\r\n"; 
                   $b++; 
                   fclose($fp); 
               } else { 
                   echo "Nee"; 
               } 
           } 
           $mail_attached .= "--".$boundary."--\r\n";
           $add_header ="MIME-Version: 1.0\r\nContent-Type: multipart/mixed; boundary=\"$boundary\""; 
           $mail_content = "--".$boundary."\r\n" 
                       . "Content-Type: text/plain; charset=iso-8859-1; format=flowed\r\n"
                       . "Content-Transfer-Encoding: 8bit\r\n\r\n" 
                       . $msg."\r\n\r\n".$mail_attached; 
           return mail($email_address,$subject,$mail_content,"From: ".$email_from."\r\n".$add_header); 
        } else { 
           return mail($email_address,$subject,$msg,"From: ".$email_from); 
        } 
    }


Dit gedeelte verstuurd gewoon een mailtje met een gegeven aantal attachments en een gegeven bron. We zijn ten einde raad want wij kunnen er niks verkeerds in vinden.

Deze output krijgt de klant op z'n scherm:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
Content-Type: text/plain; charset=iso-8859-1; format=flowed
Content-Transfer-Encoding: 8bit

Geachte heer ,
en dan hier de messagebody 
----------------------------------------------------------------------------

Content-Type: application/pdf; name="lala_499.pdf"
Content-Transfer-Encoding: base64
Content-Disposition: inline; filename="lala_499.pdf"

hier staat dan de base64_encode versie van het pdfje....
----------------------------------------------------------------------------


daaronder komt dan de base64_encode versie van het pdfje....

Acties:
  • 0 Henk 'm!

  • curry684
  • Registratie: Juni 2000
  • Laatst online: 06-09 00:37

curry684

left part of the evil twins

Onder het motto relevante informatie: welke mailclient gebruikt de klant? Pine of Elm of een recente(re) HTML-supporting client?

Professionele website nodig?


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
De klant gebruikt voor zover wij weten gewoon een recente versie van outlook express, net als ik :D

Acties:
  • 0 Henk 'm!

  • curry684
  • Registratie: Juni 2000
  • Laatst online: 06-09 00:37

curry684

left part of the evil twins

Regel 1: de klant is dom.

Doe eens driedubbelchecken.

Professionele website nodig?


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
curry684 schreef op 12 mei 2004 @ 11:02:
[...]

Regel 1: de klant is dom.

Doe eens driedubbelchecken.
working on it :D ... Tja we kunnen zelf niks checken omdat we de error niet kunnen reproduceren... Op dit moment zijn we vanalles aan het proberen, maar dan moet de klant iedere keer zijn mail checken en terugmailen.... snie handig...

[ Voor 38% gewijzigd door Verwijderd op 12-05-2004 11:17 ]


Acties:
  • 0 Henk 'm!

  • TRON
  • Registratie: September 2001
  • Laatst online: 16-09 13:13
Dan zou je toch eventjes op locatie moeten gaan kijken indien dat mogelijk is. Dat werkt een stuk sneller.

Leren door te strijden? Dat doe je op CTFSpel.nl. Vraag een gratis proefpakket aan t.w.v. EUR 50 (excl. BTW)


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Fjiew, we hebben het werkend gekregen. Blijkbaar mag je tegenwoordig geen \r\n meer wegzetten maar moet het allemaal gewoon \n zijn... Ik dacht dat windows \r\n had, mac \r en *nix \n .... maar dat zal allemaal wel door elkaar heen zijn gaan lopen ofzo :D misschien loop ik achter. Maar goed, het is opgelost, toch bedankt voor de aandacht!

Acties:
  • 0 Henk 'm!

Verwijderd

Snelste oplossing:
gebruik PHPMailer http://phpmailer.sourceforge.net

Er blijken enorm veel kleine issues te zijn bij met name MS mail clients (white space, quotes, etc.). 'k Heb zelf ooit ook zitten rommelen met attachments, maar toen kwam ik PHPMailer tegen. Daarmee is het tot nog toe gelukt om met allerlei mail clients werkende attachments te versturen.
(Het lijkt wel een reclame tekst :) Ach, het is gewoon een handig OpenSource script)

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Mja, wij gaan dan liever niet voor de snelste oplossing maar voor de zelfgemaakte oplossing. Het zijn allemaal behoorlijk grote projecten van enkele 10duizenden eurootjes en ook al is het open source wij zijn van mening dat we veel betere support kunnen leveren op iets dat we zelf gebouwd hebben dan op iets wat anderen hebben geknutseld :D

Acties:
  • 0 Henk 'm!

  • John2B
  • Registratie: Mei 2000
  • Laatst online: 17-08 00:38

John2B

I Love RAID5..!!

Verwijderd schreef op 12 mei 2004 @ 11:38:
Mja, wij gaan dan liever niet voor de snelste oplossing maar voor de zelfgemaakte oplossing. Het zijn allemaal behoorlijk grote projecten van enkele 10duizenden eurootjes en ook al is het open source wij zijn van mening dat we veel betere support kunnen leveren op iets dat we zelf gebouwd hebben dan op iets wat anderen hebben geknutseld :D
Hoezo beter support met eigen scripts, met open source had het waarschijnlijk in 1 keer goed gewerkt, en als dat niet zo zijn geweest had je je probleem ook hier gepost. Dus die beredenering van BETER support gaat niet helemaal op.

Ben overigens blij dat het werkt..!! :)

A friendship founded on business is better than a business founded on friendship


Acties:
  • 0 Henk 'm!

  • stekkel
  • Registratie: Augustus 2001
  • Laatst online: 17-09 08:05
Verwijderd schreef op 12 mei 2004 @ 11:31:
Fjiew, we hebben het werkend gekregen. Blijkbaar mag je tegenwoordig geen \r\n meer wegzetten maar moet het allemaal gewoon \n zijn... Ik dacht dat windows \r\n had, mac \r en *nix \n .... maar dat zal allemaal wel door elkaar heen zijn gaan lopen ofzo :D misschien loop ik achter. Maar goed, het is opgelost, toch bedankt voor de aandacht!
Het ligt aan de sendmail binary.
Sendmail lust in veel gevallen geen \r\n

Wanneer je gewoon rechtstreeks met een SMTP server communiceerde had je dat geeikel niet en kon je terugvallen op RFC2822 en RFC2821. Nadeel is wel dat je de \r\n. sequences moet escapen door er \r\n.. van te maken. Voordeel is dat alles veel transparanter wordt en je volledige controle over het proces krijgt.

Acties:
  • 0 Henk 'm!

Verwijderd

Het ligt aan de sendmail binary.
Sendmail lust in veel gevallen geen \r\n

Wanneer je gewoon rechtstreeks met een SMTP server communiceerde had je dat geeikel niet en kon je terugvallen op RFC2822 en RFC2821.
Sendmail is toch een SMTP server :?

Acties:
  • 0 Henk 'm!

  • stekkel
  • Registratie: Augustus 2001
  • Laatst online: 17-09 08:05
Verwijderd schreef op 12 mei 2004 @ 21:04:
[...]


Sendmail is toch een SMTP server :?
de binary is een wrapper voor de de sendmail SMTP server. Lees RFC2821 en lees de manual van de sendmail binary, dan begrijp je wat ik bedoel.
Pagina: 1