Des problèmes avec l'envoi d'un multipart/alternative e-mail avec PHP
Voici le script qui construit/envoie l'e-mail:
$boundary = md5(date('U'));
$to = $email;
$subject = "My Subject";
$headers = "From: [email protected]" . "\r\n".
"X-Mailer: PHP/".phpversion() ."\r\n".
"MIME-Version: 1.0" . "\r\n".
"Content-Type: multipart/alternative; boundary=--$boundary". "\r\n".
"Content-Transfer-Encoding: 7bit". "\r\n";
$text = "You really ought remember the birthdays";
$html = '<html>
<head>
<title>Birthday Reminders for August</title>
</head>
<body>
<p>Here are the birthdays upcoming in August!</p>
<table>
<tr>
<th>Person</th><th>Day</th><th>Month</th><th>Year</th>
</tr>
<tr>
<td>Joe</td><td>3rd</td><td>August</td><td>1970</td>
</tr>
<tr>
<td>Sally</td><td>17th</td><td>August</td><td>1973</td>
</tr>
</table>
</body>
</html>
';
$message = "Multipart Message coming up" . "\r\n\r\n".
"--".$boundary.
"Content-Type: text/plain; charset=\"iso-8859-1\"" .
"Content-Transfer-Encoding: 7bit".
$text.
"--".$boundary.
"Content-Type: text/html; charset=\"iso-8859-1\"".
"Content-Transfer-Encoding: 7bit".
$html.
"--".$boundary."--";
mail("[email protected]", $subject, $message, $headers);
Il envoie le message, et mon destinataire le reçoit, mais ils obtiennent le tout en text/plain, au lieu d'en multipart/alternative. L'affichage de la source du message reçu donne à cette (beaucoup de trucs supprimé):
Delivered-To: myrecipient@example.com
Received: by 10.90.100.4 with SMTP id x4cs111413agb;
Wed, 25 Mar 2009 16:39:32 -0700 (PDT)
Received: by 10.100.153.6 with SMTP id a6mr85081ane.123.1238024372342;
Wed, 25 Mar 2009 16:39:32 -0700 (PDT)
Return-Path: <xxx@xxxx.com>
--- snip ---
Date: Wed, 25 Mar 2009 17:37:36 -0600 (MDT)
Message-Id: <200903252337.n2PNbaw2019541@www.xxxxxxx.com>
To: trevor@saturdayplace.com
Subject: My Subject
From: me@mydomain.com
X-Mailer: PHP/4.3.9
MIME-Version: 1.0
Content-Type: text/plain;
boundary="--66131caf569f63b24f43d529d8973560"
Content-Transfer-Encoding: 7bit
X-OriginalArrivalTime: 25 Mar 2009 23:38:30.0531 (UTC) FILETIME=[CDC4E530:01C9ADA2]
X-TM-AS-Product-Ver: SMEX-8.0.0.1181-5.600.1016-16540.005
X-TM-AS-Result: No--4.921300-8.000000-31
X-TM-AS-User-Approved-Sender: No
X-TM-AS-User-Blocked-Sender: No
Multipart Message coming up
--66131caf569f63b24f43d529d8973560
Content-Type: text/plain; charset="iso-8859-1"
Content-Transfer-Encoding: 7bit
You really ought remember the birthdays
--66131caf569f63b24f43d529d8973560
Content-Type: text/html; charset="iso-8859-1"
Content-Transfer-Encoding: 7bit
<html>
<head>
<title>Birthday Reminders for August</title>
</head>
<body>
<p>Here are the birthdays upcoming in August!</p>
<table>
<tr>
<th>Person</th><th>Day</th><th>Month</th><th>Year</th>
</tr>
<tr>
<td>Joe</td><td>3rd</td><td>August</td><td>1970</td>
</tr>
<tr>
<td>Sally</td><td>17th</td><td>August</td><td>1973</td>
</tr>
</table>
</body>
</html>
--66131caf569f63b24f43d529d8973560--
Il ressemble à l'entête content-type est à se changer sur le chemin de la multipart/alternative text/plain. Je ne suis pas administrateur, donc si c'est un sendmail question, je suis en moyen-dessus de ma tête. Des suggestions?
OriginalL'auteur saturdayplace | 2009-03-26
Vous devez vous connecter pour publier un commentaire.
La ligne
devrait être
Vous ne comprennent pas les tirets dans l'en-tête.
Si quelqu'un s'est demandé pourquoi le script initial ne fonctionne pas - il suffit d'ajouter . "\r\n" pour chaque ligne $message consiste, non seulement à la première ligne ($message = "Message Multipart à venir" . "\r\n\r\n".) Ah, droit, Sam Critchley avait déjà fait observer.
OriginalL'auteur Greg
À obtenir que cela fonctionne correctement pour moi, j'ai aussi besoin d'ajouter un "\r\n" à la fin de chaque ligne d'en-tête, deux d'entre eux ("\r\n\r\n") à la fin de la ligne avant le texte et html organes, et un à la fin de chaque corps. Cela se traduit par quelque chose comme ceci:
OriginalL'auteur Sam Critchley
utiliser "\n" au lieu de "\r\n" y ressemble qmail a des problèmes avec "\r"
OriginalL'auteur
Juste une pensée, mais il pourrait être beaucoup plus simple de la peine avec quelque chose comme phpmailer ou Zend_Mail.
OriginalL'auteur Zoredache