02. januar 2010 - 00:52Der er
12 kommentarer og 1 løsning
JMail: Quoted-printable line longer than 76 chars / text/html MIME parts?
Hej Jeg har et modul der sender nyhedsbreve ud via w3JMail. Men jeg får får høj SPAM score. Der hvor jeg får problemer er på disse 2:
MIME_HTML_ONLY BODY: Message only has text/html MIME parts MIME_QP_LONG_LINE RAW: Quoted-printable line longer than 76 chars
Hvordan dælen slipper jeg af med dem?
Det første aner jeg ikke hvad der menes med og det andet giver jo ingen mening, hvis man i en HTML mail skal sætte <br> for hvert 76 tegn i sin HTML streng?
Fejlene er vel ret tydelige: 1) din email har kun en text/html del og ikke en text/plain del - løses ved også at have en text/plain del 2) der er linier længere end 76 tegn - hvilket er lidt sværere at løse, da QP encoding selv burde ordne det. Hvis vi forudsætter at det ikke er en fejl i JMail, så må der være "et eller andet" i den måde du bruger det på.
Vedr. del 1) Kanon, det var sgu det. Jeg har tilføjet: JMail.Body = RemoveHTMLNew(strPre & strBody & strPost, "", false) som fjerner alt HTML pånær "<BR>", da de vist er tilladt også i plain text. Den får i hvert fald ikke score på det mere - TAK!
Vedr. del 2) Der er jeg også lidt forvirret over JMAIL, men i deres dokumentation står der:
Encoding() : This can be used to change the default attachment encoding from base64. Valid options are "base64" or "quoted-printable".
ContentTransferEncoding(): Specifies the content transfer encoding. The default is "Quoted-Printable".
Altså at base64 er default for Encoding() og Quoted-Printable for ContentTransferEncoding(). Derfor har jeg bare sat dem på for at jeg selv ved en senere lejlighed kunne huske hvad der var default.
Jeg har forsøgt at lave det om så begge er: Quoted-Printable, men det giver det samme:
1.8 MIME_QP_LONG_LINE RAW: Quoted-printable line longer than 76 chars
Nå, UNOEURO siger overrasken nok at W3JMAIL burde virke de bruger version 4.5. Men de siger også at det alene er teksterne i HTML'en, som man skal sikre ikke kommer over 76 tegn pr. linje. efter tegn 75 skal der indsættes vbCRLF.
Men hvodan dælen skal man sikre det når ens stregn er en HTML
fx
<html><head><title>Dette er min titel</title></head><body><p>Dette er min body, som kan indeholde mange html tags fx <b>for fed</b> og <font size="5">, hvis jeg vil skrive i størrelse 5</font>. Desuden er teksen lagt over 76 tegn lang og kan indeholde <br>linjeskift.</p><p>Dette kan jeg ikke helt regne ud?</p><p>Det kunne jo også være, st jeg havde en tabel.</p><table><tr><td>Dette er min tabel celle hvor teksten også let kommer over 76 tegn og kan have <b>html tags</b></td></tr></table></body></html>
WordWrap var vejen frem... Fandt nedenstående, hvorfor opfinde den dybe talerken 2 gange? ;)
Tak for din hjælp smidder du et svar?
str = Wrap(MIN_HTML_STRENG, VbCrLf, 70)
******************************* Function Wrap(ByVal Text, ByVal WrapChar, ByVal WrapAt) ' ***************************************************************************************************** ' * WordWrap v1.2 - WordWraps a string off as near as possible to the specified max character amount * ' * By Thomas Daugaard, December 11th, 2000. * ' * * ' * Arguments: Text : The string to wordwrap * ' * WrapChar : A string specifying how/with what to wrap the string. Default is <br> * ' * WrapAt : Numeric value specifying the maximum amount of characters allowed in a * ' * string. Wraps backwards in the string to ensure that the max value is meet. * ' * * ' * Note: Arguments are passed By Value, not reference. * ' *****************************************************************************************************
Text = Trim(Text) If Len(Text) =< WrapAt Or Len(Text) = 0 Or InStr(Text, " ") = 0 Then Wrap = "" & Text: Exit Function If Len(WrapChar) = 0 Then WrapChar = "<br>"
Do If Len(Text) < WrapAt Then strFinal = strFinal & Text: Exit Do strPart = Left(Text, WrapAt): intOff = WrapAt
If Not Right(strPart, 1) = " " Then intOff = InStrRev(strPart, " ") If intOff = 0 Then intOff = InStr(WrapAt, Text, " ") If intOff = 0 Or intOff > WrapAt Then intOff = WrapAt End If strPart = Left(Text, intOff)
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.