2010-10-01 4 views
2

Je souhaite envoyer un e-mail en utilisant le texte arabe comme ligne d'objet.Envoi de mails en différentes langues à l'aide de ASP et CDOSYS

La pièce de code convertit les caractères spéciaux en texte arabe correctement pour le corps du message, mais ne parvient pas à le faire pour l'objet du message.

Je voudrais savoir ce que je manque?

 
     Set objCDOSYS = Server.CreateObject("CDO.Message") 
     Set objCDOConf = CreateObject("CDO.Configuration") 
     Set objCDOFields = objCDOConf.Fields 

     objCDOFields("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2 
     objCDOFields("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "127.0.0.1" 
     objCDOFields.Update 

     Set objCDOSYS.Configuration = objCDOConf 
     objCDOSYS.MimeFormatted=True 
     objCDOSYS.BodyPart.Charset = "Windows-1256" 

     objCDOSYS.From = Trim(Request.Form("frmSender")) 
     objCDOSYS.To = Trim(Request.Form("frmRecipient")) 

     objCDOSYS.Subject =Request.Form("frmSubject") 
     objCDOSYS.HTMLBody = Trim(Request.Form("frmMessage")) 

     objCDOSYS.HTMLBodyPart.charset = "Windows-1256" 
     objCDOSYS.Fields.update 

     objCDOSYS.Send 
     Set objCDOFields = Nothing 
     Set objCDOConf = Nothing 
     Set objCDOSYS = Nothing 

Répondre

1

Vous devrez peut-être utiliser '=? UTF-8? B?' devant le sujet et la chaîne arabe encodée en base64.

objCDOSYS.Subject = "=?UTF-8?B?" + Base64Encode(Request.Form("frmSubject")) 

La fonction Base64Encode peut trouver à - http://nolovelust.com/post/classic-asp-base64-encoder-decoder.aspx

Note: Je l'ai fait essayer encore moi-même. donc pas sûr à 100%.

+0

Merci pour la réponse, j'ai vérifié mais ça ne fonctionne pas. Vous pouvez l'essayer ici http://www.franchiseforindia.com/EmailUniCode.asp – Sandhurst

+0

@Sandhurst: Il manque un '+ '? =" 'À la fin du code, mais il y a un problème plus important. Nous ne pouvons pas simplement passer la chaîne de sujet unicode à la fonction Base64Encode, il faudrait d'abord la convertir en UTF-8. – AnthonyWJones

+0

Merci Anthony, vous avez raison. Ce doit être UTF-8. – Jirapong

5

Modification du charset UTF-8 vaut un coup de poignard: -

objCDOSYS.HTMLBodyPart.charset = "UTF-8" 

Je pense que cela va entraîner le genre de codage Jirapong a essayé mais CDOSYS le fera pour vous. Malheureusement, je sais que cela ne fonctionne pas pour les noms d'affichage dans les adresses e-mail.

+0

J'ai mis tout ce que vous m'avez dit, mais toujours pas de chance. – Sandhurst

Questions connexes