web-dev-qa-db-fra.com

le saut de ligne wp_mail ne fonctionne pas

J'ai une interface pour envoyer des courriels via SMTP (j'utilise le plug-in Postman SMTP).

Je collecte les messages dans la base de données que j'ai envoyée à quelqu'un en fonction des résultats d'une requête SQL.

Dans la base de données, j'ai stocké les messages en utilisant le caractère 
 pour les sauts de ligne.

Voici le code (je remplace les adresses e-mail par xxx, mais évidemment j'utilise l'adresse e-mail de mon client dans la pièce réelle):

$subject = $res->subject;
$message = utf8_encode( $msg );

$to = $res->url ;
$headers  = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=UTF-8' . "\r\n";
$headers .= 'From: XXX <[email protected]>' . "\r\n" .
  'Reply-To: [email protected]' . "\r\n";         

$sent = wp_mail($to, $subject , $message , $headers);

Tout fonctionne (je reçois le bon courriel avec le bon codage), mais tout est envoyé sur une seule ligne (quand il devrait y avoir un saut de ligne à chaque fois qu'il y a un &#13; dans la base de données). Bizarrement, il n'y a pas dans l'e-mail, ils sont simplement supprimés du message.

J'ai aussi essayé d'ajouter les lignes suivantes (sur des tests séparés, évidemment):

$message = str_replace('&#13;', "\r\n", $message);
$message = str_replace('&#13;', '<br />', $message);

Mais j'obtiens les mêmes résultats.

Pourriez-vous s'il vous plaît m'aider à résoudre ce problème?

2
Grégoire Llorca

Modifiez la ligne qui lit $headers .= 'Content-type: text/html; charset=UTF-8' . "\r\n"; en $headers .= 'Content-Type: text/html; charset=ISO-8859-1";, puis utilisez <br /> pour les sauts de ligne.

1
n8bar