Avatar billede kimlarsen1978 Nybegynder
02. januar 2010 - 00:52 Der 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?

*****************Afsendelseskode******************
Set JMail = Server.CreateObject("JMail.Message")
'SETTINGS
JMail.CharSet = "8859-1" 
JMail.ISOEncodeHeaders = true 
JMail.Encoding = "base64"
JMail.ContentTransferEncoding = "Quoted-Printable"
JMail.Priority = intPriority

'MESSAGE
JMail.FromName = "My name"
JMail.From = strSender
JMail.Subject = strSubject
if uCase(strType) = "TEXT/HTML" then
  strPre = "<html><head><title>E-mail</title></head><body><table width=""100%""><tr><td>"   
  strPost = "</td></tr></table></body></html>"
  JMail.HTMLBody = strPre & strBody & strPost
else
  JMail.Body = strBody
end if
JMail.Send("smtp.unoeuro.com")
******************************************************

Nogle der vil og kan hjælpe?
Avatar billede arne_v Ekspert
02. januar 2010 - 02:15 #1
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å.

JMail.Encoding = "base64"
JMail.ContentTransferEncoding = "Quoted-Printable"

forstår jeg f.eks. ikke - bruger du Base64 eller QP ??
Avatar billede kimlarsen1978 Nybegynder
02. januar 2010 - 10:40 #2
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
Avatar billede arne_v Ekspert
02. januar 2010 - 20:54 #3
Kan du helt skifte fra HTML til plain text ?
Avatar billede kimlarsen1978 Nybegynder
02. januar 2010 - 20:56 #4
Argh, det vil jeg ved lidt ked af. Jeg sender forskellige typer af mail gennem denne funktion, og ikke alle kan laves om til ren tekst...
Avatar billede arne_v Ekspert
02. januar 2010 - 21:15 #5
OK.

Giver JMail nogle muligheder for at sætte max. længden ?
Avatar billede kimlarsen1978 Nybegynder
02. januar 2010 - 21:21 #6
Avatar billede kimlarsen1978 Nybegynder
04. januar 2010 - 15:48 #7
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>

????
Avatar billede arne_v Ekspert
05. januar 2010 - 03:35 #8
En QP encoding burde selv breake linier som er for lange.

Men gør den ikke det så må du splitte linieerne op i mindre bidder og indsætte vbCrLf.

HTML er heldigvis ret ligeglad med linieskift. Du kan indsætte vbCrLf alle steder hvor der er et mellemrum (medmindre det er en PRE secktion).
Avatar billede kimlarsen1978 Nybegynder
05. januar 2010 - 17:27 #9
Skal lige vide hvad du mener med "PRE" sektion, er det

<html><head>title>xxxxx</title></head><body>

eller er det et hvilket som heltst start tag fx. <table with="200"><tr><td><font size="5"></font></td></tr></table> så må jeg ikke splittet sådan her:

<table vbCrL with="200"><tr><td><font vbCrL size="5">Dette er min tekst</font></td></tr></table>

eller hvordan?
Avatar billede kimlarsen1978 Nybegynder
05. januar 2010 - 18:28 #10
Hmm nu har testet og denne får ikke fejlen

strHTML ="<html><head><title>E-mail</title></head><body>"&VbCrLf&"<table width=""100%""><tr><td>" & VbCrLf  & "Dette er en test" & VbCrLf & "</td></tr></table></body></html>"

Men det er da helvede at lave en streng operation på det....
Avatar billede kimlarsen1978 Nybegynder
05. januar 2010 - 19:17 #11
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)
           
        Text = Right(Text, Len(Text) - Len(strPart))
        strFinal = strFinal & strPart & WrapChar
    Loop

    Wrap = strFinal
End Function
*******************************
Avatar billede arne_v Ekspert
06. januar 2010 - 03:51 #12
PRE et et HTML tag !

<PRE>
A
BB
CCC
</PRE>
Avatar billede arne_v Ekspert
06. januar 2010 - 03:51 #13
og et svar
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester