[PHP] geen tekst wel een bijlage

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik ben al 2 uren bezig met onderstaande probleem.

Ik verzend een gemaakt pdf document en een html tekst. Het document zit netjes in de bijlage maar de tekst in het mailbericht is weg. Ik heb al veel dingen geprobeerd, alleen alles draait op niks uit.

Graag jullie hulp.

code:
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
<?
$boundary = md5(microtime()); 

$text = "Dear Sir, Maddam,\n Your email client does not support HTML.";
$html = "<html><body><table bgcolor=\"#cccccc\"><tr><td>".$inhoud."</td></tr></table></body></html>";
$email = "***";
$afzender = "info@bla.com";
$afzendernaam = "Bla.com";
$subject = "Bla bla subject";
$boundary = "Dit is de Boundary van de mail 01234";

$headers = "From: ".$afzendernaam." <".$afzender.">\n"; 
$headers .= "Subject: ".$subject."\n"; 
$headers .= "MIME-Version: 1.0\n"; 
$headers .= "Content-Type: multipart/alternative;\n"; 
$headers .= "\tboundary=\"".$boundary."\"\n"; 
$headers .= "Content-Type: application/pdf;\n";
$headers .= "\tname=\"proforma_factuur.pdf\"\n";
        
$headers .= "Content-Transfer-Encoding: base64\n";
$headers .= "Content-Disposition: attachment;\n";
$headers .= "\tfilename=\"proforma_factuur.pdf\"\n\n";

$headers .= $b. "\n\n"; 
$headers .= "--".$boundary."\n"; 
$headers .= "Content-Transfer-Encoding: 7bit\n"; 
$headers .= "--".$boundary."\n"; 

                
$message = "--".$boundary."\n"; 
$message .= "Content-Type: text/plain; charset=us-ascii\n"; 
$message .= "Content-Transfer-Encoding: 7bit\n"; 
$message .= "\n"; 
$message .= $text."\n"; 
$message .= "\n"; 
$message .= "--".$boundary."\n"; 
$message .= "Content-Type: text/html\n"; 
$message .= "charset=iso-8859-1\n"; 
$message .= "\n"; 
$message .= $html."\n"; 
$message .= "\n"; 

$message .= "--".$boundary."--"; 
 
                
ail($email, $subject, $message, $headers); 
?>

Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Heb je niet een boundary teveel op regel 30?

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • Michali
  • Registratie: Juli 2002
  • Laatst online: 29-05 22:54
-NMe- schreef op vrijdag 04 maart 2005 @ 15:22:
Heb je niet een boundary teveel op regel 30?
Op regel 30 begint hij met het vullen van $message en niet meer $headers. dus dat klopt wel volgens mij.

Noushka's Magnificent Dream | Unity


Acties:
  • 0 Henk 'm!

  • Wolf87
  • Registratie: Juli 2004
  • Laatst online: 17:21
ik zat net te kijken en kwam erachter dat wanneer je de attachment eruit haalt je wel tekst hebt

nog ff tussendoor, wat krijg je te zien als je het attachment opent?

[ Voor 28% gewijzigd door Wolf87 op 04-03-2005 16:07 ]


Acties:
  • 0 Henk 'm!

  • Shadowman
  • Registratie: Januari 2002
  • Niet online
Michali schreef op vrijdag 04 maart 2005 @ 15:30:
[...]


Op regel 30 begint hij met het vullen van $message en niet meer $headers. dus dat klopt wel volgens mij.
De message komt na de headers :-).

In hoeverre accepteert php een dubbele \n in de headers? Ik dacht dat dubbele \n's worden gereplaced in een enkele \n.

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
De bijlage is juist gevuld.

Zonder bijlage komt er inderdaad gewoon tekst te staan in de mail.

Acties:
  • 0 Henk 'm!

  • chem
  • Registratie: Oktober 2000
  • Laatst online: 19-09 22:18

chem

Reist de wereld rond

Het is trouwens Madam of Madame, niet Maddam :)

Klaar voor een nieuwe uitdaging.


Acties:
  • 0 Henk 'm!

  • Wolf87
  • Registratie: Juli 2004
  • Laatst online: 17:21
Volgens mij moet het volgende gedeelte

PHP:
1
2
3
4
5
6
$headers .= "Content-Type: application/pdf;\n";
$headers .= "\tname=\"proforma_factuur.pdf\"\n";
        
$headers .= "Content-Transfer-Encoding: base64\n";
$headers .= "Content-Disposition: attachment;\n";
$headers .= "\tfilename=\"proforma_factuur.pdf\"\n\n";


in de $message na de laatste boundary

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Dit stukje zou na de laatste boundary in de message variable gezet moeten worden?

Dat werkt helaas niet.

[ Voor 14% gewijzigd door Verwijderd op 04-03-2005 21:16 ]


Acties:
  • 0 Henk 'm!

  • Shadowman
  • Registratie: Januari 2002
  • Niet online
code:
1
2
3
4
5
6
$headers .= "\tfilename=\"proforma_factuur.pdf\"\n\n";

$headers .= $b. "\n\n"; 
$headers .= "--".$boundary."\n"; 
$headers .= "Content-Transfer-Encoding: 7bit\n"; 
$headers .= "--".$boundary."\n";

wijzigen in:
code:
1
2
3
4
$headers .= "\tfilename=\"proforma_factuur.pdf\"\n";
$message = $b. "\n\n"; 
$message .= "--".$boundary."\n"; 
$message .= "Content-Transfer-Encoding: 7bit\n";
^ dacht iig dat het zo was aangezien in de headers van de mail-functie geen dubbele enters konden. En verder zoals -NMe- al zei hoeft die boundary niet tweemaal achter elkaar. (@Michali: het mail-commando verstuurd eerst de headers en dan de message, dan komen die boundaries toch achter elkaar te staan).

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Het is inmiddels opgelost.

Het invoegen van het pdf document moest onderin de message variable gebeuren.

Ook zat er een klein foutje in de headers.

Acties:
  • 0 Henk 'm!

  • Bud_s
  • Registratie: Maart 2002
  • Laatst online: 20-09 16:55

Bud_s

Team Anticimex & Lock

post ff de nieuwe code .... handig om eens terug te vinden :)

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik dacht dat alles perfect werkte, echter valt dat tegen. In outlook werkt het perfect en in the bat ook..

En toen ik thunderbird ging testen viel het behoorlijk tegen. Bijlages zie je niet ze staan alleen in de bron. Iemand hiervoor een oplossing?

Dit is mijn code:

code:
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
<?PHP

$text = "Dear Sir, Maddam,\n Your email client does not support HTML.";
$html = "<html><body><table><tr><td>".$inhoud."</td></tr></table></body></html>";
$email = "la@la.nl";
$afzender = "la@la.nl";
$afzendernaam = "Me";
$subject = "Bla bla subject";

$headers .= "MIME-Version: 1.0\n"; 
$headers .= "From: ".$afzendernaam." <".$afzender.">\n"; 
$headers .= "Subject: ".$subject."\n"; 
$headers .= "Content-Type: multipart/mixed;\n";
$headers .= "\tboundary= " . $boundary . "\n\n";

$headers .= "This is a multi-part message in MIME format.\n\n"; 

        
$message .= "--".$boundary."\n"; 
$message .= "Content-type: text/html; charset=iso-8859-1\n"; 
$message .= "\n"; 
$message .= $html."\n"; 
$message .= "\n"; 

$message .= "--".$boundary."\n"; 
$message .= "Content-Type: multipart/alternative; boundary=\"".$boundary."\"\n";
$message .= "Content-Type: application/pdf;\n";
$message .= "\tname=\"proforma_factuur.pdf\"\n";
$message .= "Content-Transfer-Encoding: base64\n";
$message .= "Content-Disposition: attachment;\n";
$message .= "\tfilename=\"proforma_factuur.pdf\"\n\n";

$message .= $b. "\n\n"; 

$message .= "--" . $boundary . "\n";
$message .= "Content-Type: application/pdf;\n";
$message .= "\tname=\"algemene_voowaarden.pdf\"\n";
$message .= "Content-Transfer-Encoding: base64\n";
$message .= "Content-Disposition: attachment;\n";
$message .= "\tfilename=\"algemene_voorwaarden.pdf\"\n\n";

$message .= $file_content . "\n\n";     //Invoegen attachment

$message .= "--".$boundary."--"; 
?>

[ Voor 19% gewijzigd door Verwijderd op 06-03-2005 11:37 ]


Acties:
  • 0 Henk 'm!

  • usr-local-dick
  • Registratie: September 2001
  • Niet online
In plaats van zelf te klooien met MIME kan je ook de PEAR classjes gebruiken natuurlijk :)

Het volgende (werkende, net geteste) voorbeeld doet precies wat jij wilt, en is stukken eenvoudiger:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?
include('Mail.php');
include('Mail/mime.php');
$crlf = "\n";
$hdrs = array(
        'From'    => 'Dick Visser <dick@tienhuis.nl>',
        'Subject' => 'Proforma factuur',
        'X-Generated-By' => 'PHP-5.0.3'
        );

$mime = new Mail_mime($crlf);
$mime->setTXTBody('Hier is uw factuur');
$mime->setHTMLBody('<h1>Eindelijk!</h1><br />Uw factuur!');
$mime->addAttachment('factuur.pdf');

$body = $mime->get();
$hdrs = $mime->headers($hdrs);

$mail =& Mail::factory('mail');
$mail->send('dick@tienhuis.nl', $hdrs, $body);

?>


FYI PEAR zit sinds 4.0.x (toch?) al bij PHP.

edit:
die txt version 'sorry your client does not support html' is wel een klein beetje bot ;)
ik zou daar dezelfde text in zetten als de html versie alleen zonder opmaak...

[ Voor 24% gewijzigd door usr-local-dick op 06-03-2005 14:45 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik zal eens proberen of dit werkt. Let wel op dat het geen bestanden zijn die verstuurd worden, maar documenten die niet gegenereerd zijn. Ik gebruik de pdf buffer om het document te zenden.

Acties:
  • 0 Henk 'm!

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 19:51

Creepy

Tactical Espionage Splatterer

En voordat je straks weer een lading code dumpt met de melding "het werkt niet, wie ziet de fout", geef AUB aan wat je nu al precies hebt geprobeerd om zo adviezen die jij al geprobreerd hebt te voorkomen.

Lees ook P&W FAQ - Leer **** debuggen!! eens door want ik denk dat het meeste wel had kunnen worden opgelost door zelf nog wat meer te debuggen :)

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


Acties:
  • 0 Henk 'm!

  • usr-local-dick
  • Registratie: September 2001
  • Niet online
[b][message=22920821,noline]Let wel op dat het geen bestanden zijn die verstuurd worden, maar documenten die niet gegenereerd zijn. Ik gebruik de pdf buffer om het document te zenden.
Ja ok maar dat is een triviaal verschil. Ik ben benieuwd!
Pagina: 1