2015-11-18 14 views
9

Utilizzando PHPMailer 5.2.14, le e-mail vengono inviate in testo/html. Il testo in uscita è disseminato di segni di uguale ogni 75 ° carattere.PHPMailer inserisce '=' segno uguale ogni 75 ° carattere

Ho provato ad utilizzare il EOL workaround, ma non ha rimosso i segni uguali in più:

$email = new PHPMailer(); 
$email->From  = '[email protected]'; 
$email->FromName = 'FromUser'; 
$email->AddAddress('[email protected]'); 
$email->Subject = 'This is a test'; 
$email->IsHTML(true); 
$email->Body = "<p>This is a test.&nbsp; This is a test.&nbsp; This is a test.&nbsp; This is a test.&nbsp; This is a test.&nbsp; This is a test.&nbsp; This is a test.&nbsp; This is a test.&nbsp; This is a test.&nbsp; This is a test.&nbsp; This is a test.&nbsp; This is a test.&nbsp; This is a test.&nbsp; This is a test.&nbsp; </p>"; 

// fix EOL here? 
$email->LE = PHP_EOL; 

$email->Send(); 

risultante fonte al ricevimento:

<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><font face="arial"><base href="http://example.com/"><!-- </base> -->= 
<p>This is a test.&nbsp; This is a test.&nbsp; This is a test.&nbsp; This i= 
s a test.&nbsp; This is a test.&nbsp; This is a test.&nbsp; This is a test.= 
&nbsp; This is a test.&nbsp; This is a test.&nbsp; This is a test.&nbsp; Th= 
is is a test.&nbsp; This is a test.&nbsp; This is a test.&nbsp; This is a t= 
est.&nbsp; This is a test.&nbsp; This is a test.&nbsp; This is a test.&nbsp;= 
</p></font> 

I segni uguali appaiono durante la visualizzazione in Outlook. Quando invio lo stesso testo/html a un account Gmail, i segni di uguale non sono presenti.

Cosa deve accadere per eliminare questi segni di parità parassiti per i destinatari che utilizzano Outlook?

+0

Si prega di ridurre la dimensione del testo, non abbiamo bisogno di così tante righe per capire che ci sono '='. Quale codice si usa per codificare il testo? –

+0

Si prega di suggerire un appropriato sub se le domande php non sono appropriate qui. –

+0

Ancora una volta per le persone che votano per chiudere questa domanda come fuori tema, si prega di suggerire il sub appropriato piuttosto che uccidere silenziosamente la domanda. t chiudendo questo come il tag 'PHPMailer' è stato usato' '2055' 'volte a partire da questa risposta. –

risposta

6

Ho avuto lo stesso problema con html-email in PHPMailer. Ho provato cose diverse e scoperto:

  • il problema si verifica se il messaggio ha una lunghezza speciale - nel mio caso> 1002 lettere in una linea (quando Ho rimosso alcune lettere (irrilevante quali) l'e-mail era corretto)
  • Il problema è visibile solo in alcuni programmi di posta elettronica (es. MS Outlook, sito t-online.de; nessun problema con yahoo)
  • I testet PHPMailer 5.2.7 - 5.2.14: Il il problema esiste in PHPMailer> 5.2.10 (nessun problema in PHPMailer 5.2.7 - 5.2.10)
  • Soluzioni come '$ mail-> Codifica = "7bit";' oppure "$ mail-> LE = PHP_EOL;" non ha funzionato per me
  • No Problemi durante l'invio dell'email tramite isSmtp().
  • Testato su due server diversi: il server 1 contiene segni di uguale, il server 2 non contiene segni ma ha interruzioni di riga errate - la configurazione php su entrambi i server è quasi identica> non sembra essere un problema di php

Quindi per me la soluzione era "prendi PHPMailer 5.2.10" fino a quando non risolvono il problema in una versione più recente - No buona soluzione, ma funziona per me fino trovo uno migliore ;-)

+0

5.2.10 risolto il problema. Grazie per la risposta. –

+0

Qualcuno ha provato 5.2.16? – HWD

5

Ecco cosa il documento dovrebbe essere simile:

<!DOCTYPE html> 
<head> 
    meta stuff and <base href...> 
</head> 
    <body> 
    HTML stuff 
    </body> 
</html> 

Tutto ciò al di fuori che e non conformi al codice HTML, metterà un ammortizzatore sul vostro giorno.

quanto posso vedere, si hanno meta che appartengono a <head> e hanno <font> tag che appartiene <body> ecc ecc Se non c'è una corretta strutturazione documento HTML, poi qualcosa si lamenta di sicuro. Compreso un doctype valido.

Un rapido sidenote sul tag <font>; è in deprecazione.

È possibile utilizzare invece lo stile CSS in linea. Non utilizzare i tag <style> poiché la maggior parte dei client di posta elettronica lo butta fuori e lo ignora.

+0

Non so perché questo è stato scelto come risposta corretta. Mentre è un buon consiglio, non ha niente a che fare con il problema. – Synchro

+2

@Synchro [Leggi il commento dell'OP ...] (http://stackoverflow.com/questions/33787777/phpmailer-inserts-equal-sign-every-75th-character/33788388?noredirect=1#comment55343609_33787777). Ha tutto a che fare con esso. Guarda anche il loro codice e il messaggio che stanno cercando di inviare. –

+0

La risposta di Fred è solida ma la risposta di SusiMage in basso (pubblicata ieri) è ora contrassegnata come risposta selezionata. Vedi il suo post per il perché. –

2

Questo è noto come quoted-printable encoding ed è abbastanza comune nei messaggi di posta elettronica. Il segno di uguale viene utilizzato come carattere di escape e le lunghezze della linea sono limitate a 76 caratteri. Se Outlook non lo riconosce, potrebbe essere necessario impostare manualmente le intestazioni indicando che è codificato in questo modo.

-1
$email = new PHPMailer(); 
$email->From  = '[email protected]'; 
$email->FromName = 'FromUser'; 
$email->AddAddress('[email protected]'); 
$email->Subject = 'This is a test'; 
$email->IsHTML(true); 
$email->Body = "<p>This is a test.&nbsp; This is a test.&nbsp; This is a test.&nbsp; This is a test.&nbsp; This is a test.&nbsp; This is a test.&nbsp; This is a test.&nbsp; This is a test.&nbsp; This is a test.&nbsp; This is a test.&nbsp; This is a test.&`enter code here`nbsp; This is a test.&nbsp; This is a test.&nbsp; This is a test.&nbsp; </p>"; 

// fix EOL here? 
$email->LE = PHP_EOL; 

$email->Send(); 
0

Con '$mail->Encoding = 'base64'; funziona per noi ora con v5.2.17 . Speriamo che questo sia finalmente risolto in v6.

Problemi correlati