2010-02-01 1 views
3

Nous obtenons une marque d'exclamation aléatoire (!) Dans le corps de l'e-mail en utilisant un objet CDO dans Classic ASP.Point d'exclamation aléatoire dans le corps de l'e-mail à l'aide de CDO

Nous n'obtenons pas ce point d'exclamation avec perspectives. Le problème ne se produit qu'avec le client Lotus Notes. Nous utilisons le serveur IIS SMTP pour envoyer des emails.

Modifier

Set myMail= Server.CreateObject("CDO.Message") 
myMail.Subject="Business and Company News on your Mobile Device" 
myMail.From="[email protected]" 
myMail.To="[email protected]" 
htmlbody = htmlbody (coming runtime) 
myMail.BodyPart.ContentTransferEncoding = "quoted-printable" 
myMail.HTMLBody = htmlbody 
myMail.Send 

Je pense que le client n'utilise pas SMTP. Mais ils utilisent LotusNotes à coup sûr.

+0

S'il vous plaît expliquer un peu plus: vous développez des pages Web en ASP classique? Et vous envoyez des mails en utilisant le serveur IIS SMTP? Où se trouve le client Lotus Notes dans cette image. S'il vous plaît montrez du code ce que vous faites. – Edelcom

+0

Set MonCourriel = Server.CreateObject ("CDO.Message") \t myMail.Subject = "Business and Company Nouvelles sur votre appareil mobile" \t myMail.From = "[email protected]" \t de myMail.To = "[email protected]" \t htmlbody = htmlbody (exécution à venir) \t myMail.BodyPart.ContentTransferEncoding = "cité imprimable" \t myMail.HTMLBody = htmlbody \t \t myMail.Send Je pense que le client n'est pas en utilisant SMTP. Mais ils utilisent LotusNotes à coup sûr. – jvm

Répondre

5

Les points d'exclamation dans les e-mails sont généralement causés par des lignes trop longues. Videz le corps de l'e-mail que vous créez dans ASP vers un fichier et examinez-le. Essayez de séparer les lignes à des endroits sensibles avec des retours à la ligne. Je suppose qu'il s'agit d'un message HTML - placez les nouvelles lignes après les balises HTML appropriées.

+0

Pouvez-vous développer à ce sujet, peut-être fournir un exemple? J'ai le même problème mais aucune des réponses ci-dessus ne fonctionne pour moi. – ckpepper02

+2

Hmmm bien OK J'ai posté ceci il y a trois ans, basé sur quelque chose dont je me souvenais vaguement ... mais mon vague souvenir était que les lignes qui étaient plus longues que certaines limites produites! des notes. Bien sûr, votre! des marques pourraient être produites pour une autre raison. Essayez de jeter le corps brut que vous essayez d'envoyer, et voyez si le! les marques sont en corrélation avec quelque chose (caractères unicodes impairs, lignes de longueur particulière, etc.). – stusmith

5

La seule différence que je vois avec mon code est

.HTMLBody= psBody 
.HTMLBodyPart.ContentTransferEncoding = "quoted-printable" 

Ainsi HTMLBodyPart.... au lieu de BodyPart.....

Je ne sais pas si cela fait une différence, mais vous pouvez l'essayer.

+2

Merci. Cela a fonctionné pour moi. Nous emballions des mots à 78 caractères. Lorsque nous avons envoyé un courriel, les points d'exclamation ont commencé à apparaître. Puisque nous mettons aussi la version texte du corps, il semble que nous devions spécifier l'encodage. Le même problème n'était pas là quand nous avons testé en utilisant d'autres composants tels que Chilkat ou par défaut.classe MailMessage net. – Shrini

0

Si je ne me trompe pas, la solution "quoted-printable" fonctionne mais elle génère des problèmes avec les pièces jointes binaires. J'ai donc écrit une petite fonction VbScript qui corrige les longues chaînes et rend le htmlbody compatible avec tous les clients. Ici, il est:

<% 
' 
' **** fix CDOSYS exclamation mark problem - TFI 10/22/2013 - v1.1 
' 
' This function breaks a string into 76 chars (or less) lines, thus avoiding 
' the "exclamation mark" problem when sending e-mails through CDOSYS component 
' v.1.1 - fixed a bug that clipped the message at its end 

function fixstring(string1) 
    Dim string2,pstart,pos0,pos1,part 
    string2="" 
    pstart=1 
    do 
     part=mid(string1,pstart,76) 
     pos0=instr(part,vbcrlf) 
     if pos0=0 then 
      pos1=instrrev(part," ") 
      if pos1=0 then 
       string2=string2&part&vbcrlf 
       pstart=pstart+76 
      else 
       string2=string2&left(part,pos1)&vbcrlf 
       pstart=pstart+pos1 
      end if 
     else 
      string2=string2&left(part,pos0)&vbcrlf 
      pstart=pstart+pos0 
     end if 
    loop while pstart<len(string1) 
    fixstring=string2 
end function 

string1="Lorem ipsum dolor sit"&vbcrlf&"amet, consectetur adipiscing elit. Sed in dignissim risus. Vestibulum ac justo sed massa posuere pellentesque non et odio. Suspendisse scelerisque sed ante in ullamcorper. Sed vel diam sed ligula commodo aliquet. Fusce aliquam eleifend arcu, vitae euismod purus pellentesque ac. In adipiscing, eros a semper semper, magna ligula volutpat dui, a vulputate nisl tellus a nisi. Donec et fringilla tellus. Praesent nibh neque, hendrerit ut fringilla eget, condimentum nec ligula. Mauris porta et velit et faucibus. Morbi aliquam risus urna, eu ultricies purus venenatis eget. Donec elementum ante dictum, euismod augue at, euismod lorem. Praesent sit amet tempus est. Nam et neque mollis, pretium ante sed, aliquet enim. abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrs Integer vestibulum lacus euismod lectus placerat, ut commodo metus tempor. Vivamus sagittis mauris id fringilla mattis. Nam convallis accumsan nulla nec eleifend. Suspendisse lobortis iaculis magna vel convallis. Ut id metus posuere, ullamcorper sapien at, sodales massa. Aenean commodo quis dolor vitae convallis. Duis sed metus non nisl commodo porttitor a sed augue. Vestibulum non risus bibendum, aliquam nulla vel, imperdiet sem. Suspendisse mattis eu lorem ac accumsan. Donec eget pulvinar libero. Nam cursus gravida gravida. Proin interdum elementum euismod. Nunc nec viverra ipsum. Nunc ultrices purus nisi, sed scelerisque elit suscipit ut. " 
response.write "<b>string1:</b><br>"&string1&"<BR><br>" 
response.write "<b>string2:</b><br>"&replace(fixstring(string1),vbcrlf,"<br>") 
%> 
+0

Attention, cette fonction est un peu cassée. Le texte restant sur la dernière ligne est perdu lorsque vous l'utilisez! – BoffinbraiN

0

La meilleure solution que je trouve est d'utiliser ce code:

ObjMail.HtmlBody="text of your message" 
'*** NOTE: the following instruction has to be placed HERE, just after the HtmlBody 
ObjMail.HtmlBodyPart.ContentTransferEncoding = "quoted-printable" 

Il semble fonctionner parfaitement!

Questions connexes