Hallo,

ik heb een php script waarbij een pdf als e-mail bijlage moet worden verstuurd. Dit lukt 100% goed op mijn windows test server (IIS).
Maar zodra ik hetzelfde wil doen op een linux webserver (RaspberryPI) met Apache dan krijg ik de mail met heleboel tekens in de mail.

Ik zal de hele pagina besparen en alleen de mail routine vermelden.

<?php
// email fields: to, from, subject, and so on
$message = $bericht;
$from_name = "factuur ".$invoice_number;
$header = "From: ".$from_name." <".$email_from.">\r\n";

// boundary
$semi_rand = md5(time());
$mime_boundary = "==Multipart_Boundary_x{$semi_rand}x";
$header .= "\nMIME-Version: 1.0\n" . "Content-Type: multipart/mixed;\n" . " boundary=\"{$mime_boundary}\"";

// multipart boundary
$message = "This is a multi-part message in MIME format.\n\n" . "--{$mime_boundary}\n" . "Content-Type: text/plain; charset=\"iso-8859-1\"\n" . "Content-Transfer-Encoding: 7bit\n\n" . $message . "\n\n";
$message .= "--{$mime_boundary}\n";

// preparing attachments
$data = chunk_split(base64_encode(file_get_contents($attach_file)));
$message .= "Content-Type: {\"application/octet-stream\"};\n name=\"".$invoice_number.".pdf\"\nContent-Disposition: attachment;\n filename=\"".$invoice_number.".pdf\"\nContent-Transfer-Encoding: base64\n\n" . $data . "\n\n";
$message .= "--{$mime_boundary}\n";

if(mail($email_invoice, "$subject", $message, $header)) {
print "<tr><td colspan='2'><br />You will receive a invoice email.</td></tr>\n";
} else {
print "<tr><td colspan='2'><br />There is a error sending the invoice email.</td></tr>\n";
}
?>
in beide gevallen zie ik geen boundary definitie staan.

Je kunt in jouw mail client niet de hele source zien? In thunderbird is dat gewoon ctrl-U.

Maar goed:
je bent nu al uren zoet met de headers.
In 15 minuten heb je PHPmailer geinstalleerd en in gebruik.
Ivo P op 15/01/2014 14:40:06

In 15 minuten heb je PHPmailer geinstalleerd en in gebruik.


Ik zeg doen

Reageren