2016-03-22 28 views
1

Ich verwende Microsoft EWS (Exchange-Webdienste) zum Senden von E-Mails an externe Kunden (in Bezug auf Supportanrufe).Steuern Sie die Nachrichtencodierung beim Senden von E-Mails mit der EWS-API

Einer unserer Kunden versuchen, automatisch den E-Mail-Nachrichtentext, um ihr eigenen Support-Call-System zu importieren (die JAVA basierte glaube ich) und sie halten immer diese Ausnahme:

Nicht unterstützte Codierung Ausnahme: iso-8859 -10

so haben sie mich gebeten, es zu UTF8 zu ändern

Wenn ich ihnen eine E-Mail von meinem Outlook senden (die ein Kunde von demselben Exchange ist) es funktioniert gut. Es passiert nur, wenn über EWS gesendet wird.

Hier ist mein Code:

protected void SendEmail2(string recipientsAddresses, string senderAddress, string ccRecipients, string subject, string body, bool CCToSender, bool simulate, Importance messageImportance) 
    { 
     ExchangeService service = null; 
     EmailMessage message = null; 

     try 
     { 
      // initialize a proxy to the exchange web services 
      service = new ExchangeService(MAGMA_EXCHAGE_VERSION); 
      service.Url = new Uri(MAGMA_EWS_URI); 

      // create the message 
      message = new EmailMessage(service); 

      // Add recipients 
      foreach (string recipientEmail in recipientsAddresses.Split(";".ToCharArray())) 
      { 
       message.ToRecipients.Add(new EmailAddress(recipientEmail)); 
      } 

      // handle inline images 
      body = AddInlineImages(message, body); 

      // set everything 
      message.From = new EmailAddress(senderAddress); 
      message.Subject = subject; 
      message.Body = new MessageBody(BodyType.HTML, body); 
      message.Importance = messageImportance; 

      // and send 
      message.Save(); 
      FolderId SentFolderForUser = new FolderId(WellKnownFolderName.SentItems, senderAddress); 
      message.SendAndSaveCopy(SentFolderForUser); 
     } 
     catch (Exception) 
     { 
      throw; 
     } 
    } 

Die Zeichenfolge, die ich an den "Körper" übergeben ist ein HTML-Code, ein enthält:

meta charset = "UTF-8" Tag unter der Überschrift .

Gibt es irgendetwas, das ich hier vermisse?

Danke, Gil.

Antwort

0

Sie wünschen könnte, dass und so etwas wie unten verwenden, um neu codieren die Codierung zu setzen:

$ews = new ExchangeWebServices($host, $user, $password, ExchangeWebServices::VERSION_2007_SP1); 
$msg = new EWSType_MessageType(); 
$msg->MimeContent = new EWSType_MimeContentType(); 
$msg->MimeContent->_ = base64_encode("Mime-Version: 1.0\r\n" 
    . "From: [email protected]\r\n" 
    . "To: [email protected]\r\n" 
    . "Subject: nothing\r\n" 
    . "Date: Tue, 15 Feb 2011 22:06:21 -0000\r\n" 
    . "Message-ID: <{0}>\r\n" 
    . "X-Experimental: some value\r\n" 
    . "\r\n" 
    . "I have nothing further to say.\r\n"); 
$msg->MimeContent->CharacterSet = 'UTF-8'; 

zusätzliche sehen diese question here wie es ähnlich sein gefalzt.

Hinweis: Hier ist eine gute starting point regarding the content-type encoding Option. Sie können auch das offizielle Microsoft Howto here überprüfen.