2012-01-24 1 views
1

J'utilise EWS pour envoyer un e-mail avec des pièces jointes en ligne.Envoyer des pièces jointes en ligne avec ews

Je suis utilisez le code suivant pour cela:

var attachment = attachments.AddFileAttachment(path); 
attachment.ContentId = cid; 
attachment.IsInline = true; 
attachment.ContentType = "PNG/Image"; 

corps Html du message contient un fragment suivant

<img src=""cid:{cid}""></img> 

où {} cid est une valeur de cid sur le terrain.

Cela fonctionne quand je vérifie les emails avec Outlook mais dans OWA l'image n'est pas montrée dans le corps du message.

S'il vous plaît me suggérer le bon moyen d'envoyer le courrier avec l'image inline via EWS pour voir dans OWA.

+0

Salut, avez-vous trouvé une solution pour cela? –

Répondre

1

Le code ci-dessous fonctionne pour moi et je peux voir la pièce jointe inline dans Outlook/OWA/Mobile.

Étapes:

  1. corps HTML avec des espaces réservés pour contentids

  2. remplacerons cette placeholders avec l'attachement réel contentids

  3. Créer une nouvelle pièce jointe et définissez les propriétés en ligne (true) et contentid (contentid réelle pour la pièce jointe associée)

    string attachment = "c:\\inlineattachment.png"; 
    
        // Create an e-mail message using the ExchangeService. 
        EmailMessage message = new EmailMessage(ExchangeServiceObject); 
    
        // Subject 
        message.Subject = "Email with inline attachments"; 
    
        // Message body with place holder for contentid 
        message.Body = "Email body with inline attachment </br> <img src=\"cid:{0}\">"; 
        message.Body.BodyType = BodyType.HTML; 
    
        // Replace the place holder with contentid 
        // Random GUID is used to avoid name collision for contentids 
        string newGuid = Guid.NewGuid().ToString(); 
        message.Body = string.Format(message.Body, newGuid); 
    
        // Create a new attachment and add necessary properties to make it inline 
        message.Attachments.AddFileAttachment(attachment); 
        message.Attachments[message.Attachments.Count - 1].IsInline = true; 
        message.Attachments[message.Attachments.Count - 1].ContentId = newGuid; 
    
        // Add recipeint 
        message.ToRecipients.Add("[email protected]"); 
    
        // Send the e-mail message and save a copy. 
        message.SendAndSaveCopy(); 
    
Questions connexes