probleem met Mail/mime
Ik heb een script geschreven dat een html form verwerkt tot pdf-document en die vervolgens mailt naar een adres. De mail komt vervolgens aan met het pdf-doucment als attachement.
Probleem:
Als ik mijn mail online check werkt alles voorbeeldig, maar als de mail aankomt in Outlook is mail en attachement allemaal in plain text. Hoe kan ik dit oplossen.
Vereenvoudigd voorbeeld van mijn script:
Code (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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
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
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
<?
if(isset($_POST['Submit']))
{
$html='<center><h2><font color="#FF0000">A A N M E L D I N G S F O R M U L I E R</font></h2><p></center>';
$html.='<table border="0">';
$html.='<tr><td>Ik meld mij aan voor:</td><td valign="top">'.$aanmld.'</td></tr>';
$html.='<tr><td>Naam:</td><td>'.$naam.'</td></tr></table>';
require('html2fpdf.php');
$pdf=new HTML2FPDF();
$pdf->AddPage();
$pdf->WriteHTML($html);
$pdfcontent = $pdf->Output("aanmelding.pdf", "S");
require_once('Mail.php');
require_once('Mail/mime.php');
// email address of the recipient
// $to = "[email protected]";
$to = "[email protected]";
// email address of the sender
$from = $email;
// subject of the email
$subject = "Aanmelding van ".$naam;
// email header format complies the PEAR's Mail class
// this header includes sender's email and subject
$headers = array('From' => $from,
'Subject' => $subject);
// We will send this email as HTML format
$htmlbody = '<html><body bgcolor="#ffffff"><center>';
$htmlbody.='<table><tr><td colspan="2"><b>INSIGHTOROUT AANMELDING</b></td></tr>';
$htmlbody.='<tr><td>Van:</td><td>'.$naam.'</td></tr></table>';
$htmlbody.='Zie attachement voor verdere aanmelding<p>';
$htmlbody.='</body></html>';
// create a new instance of the Mail_Mime class
$mime = new Mail_Mime();
// set HTML content
$mime->setHtmlBody($htmlbody);
// IMPORTANT: add pdf content as attachment
$mime->addAttachment($pdfcontent, 'application/pdf', 'aanmelding.pdf', false, 'base64');
// build email message and save it in $body
$body = $mime->get();
// build header
$hdrs = $mime->headers($headers);
// create Mail instance that will be used to send email later
$mail = &Mail::factory('mail');
// Sending the email, according to the address in $to,
// the email headers in $hdrs,
// and the message body in $body.
$mail->send($to, $hdrs, $body);
echo '<html><body><center><h2><font color="#FF0000">Bedankt voor de aanmelding!</font></h2></center></body></html><p>';
}
?>
if(isset($_POST['Submit']))
{
$html='<center><h2><font color="#FF0000">A A N M E L D I N G S F O R M U L I E R</font></h2><p></center>';
$html.='<table border="0">';
$html.='<tr><td>Ik meld mij aan voor:</td><td valign="top">'.$aanmld.'</td></tr>';
$html.='<tr><td>Naam:</td><td>'.$naam.'</td></tr></table>';
require('html2fpdf.php');
$pdf=new HTML2FPDF();
$pdf->AddPage();
$pdf->WriteHTML($html);
$pdfcontent = $pdf->Output("aanmelding.pdf", "S");
require_once('Mail.php');
require_once('Mail/mime.php');
// email address of the recipient
// $to = "[email protected]";
$to = "[email protected]";
// email address of the sender
$from = $email;
// subject of the email
$subject = "Aanmelding van ".$naam;
// email header format complies the PEAR's Mail class
// this header includes sender's email and subject
$headers = array('From' => $from,
'Subject' => $subject);
// We will send this email as HTML format
$htmlbody = '<html><body bgcolor="#ffffff"><center>';
$htmlbody.='<table><tr><td colspan="2"><b>INSIGHTOROUT AANMELDING</b></td></tr>';
$htmlbody.='<tr><td>Van:</td><td>'.$naam.'</td></tr></table>';
$htmlbody.='Zie attachement voor verdere aanmelding<p>';
$htmlbody.='</body></html>';
// create a new instance of the Mail_Mime class
$mime = new Mail_Mime();
// set HTML content
$mime->setHtmlBody($htmlbody);
// IMPORTANT: add pdf content as attachment
$mime->addAttachment($pdfcontent, 'application/pdf', 'aanmelding.pdf', false, 'base64');
// build email message and save it in $body
$body = $mime->get();
// build header
$hdrs = $mime->headers($headers);
// create Mail instance that will be used to send email later
$mail = &Mail::factory('mail');
// Sending the email, according to the address in $to,
// the email headers in $hdrs,
// and the message body in $body.
$mail->send($to, $hdrs, $body);
echo '<html><body><center><h2><font color="#FF0000">Bedankt voor de aanmelding!</font></h2></center></body></html><p>';
}
?>
Zo te zien is jouw html geen (valid) html.
Bedoel je het HTML dat verwerkt wordt tot pdf-document?
$htmlbody = '<html><body ...........
Daar mist bv. de <head> en de <title> om maar iets te noemen.
Edit: Typo.
Gewijzigd op 01/01/1970 01:00:00 door - SanThe -
$text_body = <<<_TXT_
INSIGHTOROUT AANMELDING\n
Van: $naam\n
Straat: $adres\n
Postcode: $postcode $plaats\n
Email: $email\n
Tel: $tel\n
Mobiel: $mobiel\n\n
Zie attachement voor verdere aanmelding\n
_TXT_;
$mime->setTXTBody($text_body);
Maar tekst is altijd plain/text. Dat is nooit html. Misschien begrijp ik je verkeerd hoor.
Ja, dat is zo.. Het probleem zit 'm ook meer in die attachement. Die komt aan in een een tekstfile met plain text erin. Als ik mijn mail online check (bij het e-mailprogramma van mijn provider) komt wel gewoon de mail binnen met het pdf-document als attachement.
Dan zijn waarschijnlijk de headers van je mail niet correct.
M.a.w. het is mij een groot raadsel!
Dan heb je misschien last van versie verschillen in de software die is geïnstalleerd? Anders heb ik ook geen idee meer.
Tja, zou kunnen... bedankt i.i.g. voor het meedenken zover
$mime = new Mail_mime();
vervangt voor deze
$mime = new Mail_mime("\n");
werkt alles goed!
Succes verder.
Let in het vervolg even op onze niet bumpen regel.
Bumpen::
SanThe.