problème reception de mail en php

WRInaute occasionnel
Bonjour,
Je suis en trein de construire un système d'alerte qui envois un mail sous format html...tout fonctionne sauf que sur htomail.com je reçois un mail vide. Sur gmail et voila, cela marche parfaitement. sauriez vous pourkoi ?
Merci
hanlin
 
WRInaute accro
J'irais même jusqu'à dire on pourrait avoir la totalité du "source" du mail avec les en-têtes et tout ça?

Il n'y a que du HTML, ou il y a du HTML et du texte en multipart/alternative? Il y a du texte ou que des images? S'il y a des images, elles sont incluses dans le mail (multipart/related) ou avec un src externe? Le mail a une signature DKIM? Il utilise du CSS? Si oui, interne ou externe?

Bienvenue dans le monde merveilleux du mail html...

Jacques.
 
WRInaute occasionnel
Salut,
j'utilise la fonction suivante pour envoyer mon mail :
Code:
function sendHTMLemail($HTML,$from,$to,$subject)
{
// First we have to build our email headers
// Set out "from" address

    $headers = "From: $from\r\n"; 

// Now we specify our MIME version

    $headers .= "MIME-Version: 1.0\r\n"; 

// Create a boundary so we know where to look for
// the start of the data

    $boundary = uniqid("HTMLEMAIL"); 
    
// First we be nice and send a non-html version of our email
    
    $headers .= "Content-Type: multipart/alternative;".
                "boundary = $boundary\r\n\r\n"; 

    $headers .= "This is a MIME encoded message.\r\n\r\n"; 

    $headers .= "--$boundary\r\n".
                "Content-Type: text/plain; charset=ISO-8859-1\r\n".
                "Content-Transfer-Encoding: base64\r\n\r\n"; 
                
    $headers .= chunk_split(base64_encode(strip_tags($HTML))); 

// Now we attach the HTML version

    $headers .= "--$boundary\r\n".
                "Content-Type: text/html; charset=ISO-8859-1\r\n".
                "Content-Transfer-Encoding: base64\r\n\r\n"; 
                
    $headers .= chunk_split(base64_encode($HTML)); 

// And then send the email ....

    mail($to,$subject,"",$headers);
    
}



dans ma variable $HTML j'ai simplement un tableau qui fait ressortir un titre, une date et le nom d'une categorie de ma base de donnée.
un truc du genre

Code:
$HTML.= " <table width=\"100%\">
  <tr>
    <th><div align=\"left\" >when</div></th>
    <th><div align=\"left\" >title</div></th>

    <th><div align=\"left\" >location</div></th>
  </tr>
  <tr>
    <td colspan=\"4\"><hr align=\"center\" size=\"1\" /></td>
  </tr>
";while ($adslist=mysql_fetch_array($classifieds) ) {

$adurl="http://monsite.com/index.php?adid=".$adslist['id']."&catid=".$adslist['catid'];
 
$userprofile="http://monsite.com/index.php?userid=".$adslist['useridads'];
 
$HTML.="<tr><td>".$adslist['created']."</td>\n";
 
$HTML.="<td><a href=\"$adurl\"><h2>".strip_html_tags($adslist['headline'])."</h2></a> from <a href=\"$userprofile\">".$adslist['username']." </a></td>";

/*$message.="<td></td>";*/

//getting the location name 

$town= str_replace (',','',$adslist['adcity']);

$location=mysql_query("select fieldtitle, fieldvalue from classify_field_values where fieldvalue='".$town."' ");


$myloc=mysql_fetch_array($location);
//end of query for location


$HTML.="<td>".$myloc['fieldtitle']." </td></tr>";
 
WRInaute discret
Salut,

Je me suis récemment pris la tête sur le même problème que toi ;-) C'est décidemment pas simple d'envoyer des e-mails en HTML. Essaie de remplacer les "\r\n" pas des "\n", c'est une source d'incompatibilité.

Ensuite, j'ai aussi eu des soucis avec le format "multipart/alternative" et pour l'instant, je n'envoie le mail qu'en HTML, ça évite d'avoir à utiliser de "boundary" et ça simplifie pas mal les choses ... Je garde ce problème pour plus tard. Mais dans le code que tu as copié, il manque la fermuture de "boundary" en fin de message, non ?

Tiens nous au courant de tes tests.
 
Discussions similaires
Haut