2009-07-14 7 views
17

J'ai un problème pour envoyer des e-mails en texte brut à l'aide de PHPMailer.Envoi d'e-mails en texte brut à l'aide de PHPMailer

J'ai texte que j'ai lu à partir d'un fichier texte et l'envoyer au destinataire du message via PHPMailer

Lorsque le destinataire reçoit l'e-mail réelle, la mise en forme du courrier est pas comme dans le fichier texte, tout est en une ligne, pas de nouvelles lignes et onglets sont inclus dans l'e-mail que j'envoie. L'habillage de texte est totalement désactivé.

code:

 $mail->ContentType = 'text/plain'; 
     $mail->IsHTML(false); 
     $address = "[email protected]"; 
     $mail->AddAddress($address, "John Doe"); 

     $mail->SetFrom(EMAIL_TEST_FROM); 

     $mail->AddReplyTo(EMAIL_TEST_REPLY); 



     $mail->Subject = $action." REGISTRATION ".$formName.$tld; 
     $mail->From = EMAIL_TEST; 

     $mail->MsgHTML(file_get_contents($newFile)); 


     if($mail->Send()){ 
      return true; 
     } 
+0

Il est un fichier d'enregistrement de domaine, whois. co.za, mais le problème a été résolu. Thx James – Roland

+0

Vous pouvez simplifier la partie 'if ($ mail-> Send())' à 'return $ mail-> Send();'. – Melebius

Répondre

23

Vous définissez $mail->MsgHTML() à un message texte brut, et depuis la mise en forme des espaces est ignoré en HTML, vous obtenez un texte en ligne.

Je ne l'ai pas utilisé PHPMailer pendant un certain temps, mais d'essayer de mémoire:

$mail->Body = file_get_contents($newFile); 
10
$mail->ContentType = 'text/plain'; 
    $mail->IsHTML(false); 
    $address = "[email protected]"; 
    $mail->AddAddress($address, "John Doe"); 

    $mail->SetFrom(EMAIL_TEST_FROM); 

    $mail->AddReplyTo(EMAIL_TEST_REPLY); 



    $mail->Subject = $action." REGISTRATION ".$formName.$tld; 
    $mail->From = EMAIL_TEST; 

    // Very important: don't have lines for MsgHTML and AltBody 
    $mail->Body = file_get_contents($mailBodyTextFile); 
    // $mail->Body = $_POST["msg"]; //If using web mail form, use this line instead. 


    if($mail->Send()){ 
     return true; 
    } 
+1

+1 pour l'explication des lignes à exclure ainsi que des éléments à inclure pour déclencher le texte uniquement. – squarecandy

0

Essayez ci-dessous le code qui fonctionne très bien:

 try { 
      $mail->AddAddress('[email protected]', 'Jit Pal'); 
      $mail->SetFrom('[email protected]', 'Test User'); 
      $mail->Subject = "All machine's tests."; 
      $mail->Body = "All machine's tests working fine."; 
      $mail->Send(); 
      echo "<br/>Message sent successfully...<br/><br/>\n"; 
     } catch (phpmailerException $e) { 
      echo $e->errorMessage(); 
     } catch (Exception $e) { 
      echo $e->getMessage(); 
     } 
Questions connexes