2016-01-14 3 views
4

J'utilise mimekit pour recevoir et envoyer du courrier pour mon projet. J'envoie des mails reçus avec quelques modifications (à & à partir de parties). Et maintenant j'ai besoin de modifier dans la section du corps. Je remplacerai un mot spécifique par des caractères asterix. Texte spécifique différent pour chaque courrier. Le courrier peut être n'importe quel format. Vous pouvez voir que j'ai trouvé ce que je veux mais je ne sais pas comment puis-je remplacer sans erreur?comment modifier le corps du message - Mimekit Message

enter image description here

+0

Si la propriété Text est accessible en écriture, je suppose que la seule façon de le savoir est d'essayer de le modifier. – Alex

+0

oui La propriété de texte semble accessible en écriture. Mais; MimeMessage mesaj; mesaj.body n'est pas une sorte de type de liste. Donc je ne peux pas accéder et modfiy mesaj.body [0] .Text. Je ne peux pas trouver le chemin de la propriété Text. –

Répondre

4

MimeMessage.Body est une structure arborescente, comme MIME, vous devrez naviguer vers le MimePart qui contient le contenu que vous souhaitez modifier.

Dans ce cas, puisque vous souhaitez modifier un texte/* MimePart, il sera en fait une sous-classe de MimePart appelé TextPart qui est ce qui a la propriété .Text (qui est accessible en écriture).

J'ai la documentation écrite sur la façon de traverser la structure MIME d'un message pour trouver la partie que vous cherchez ici: http://www.mimekit.org/docs/html/WorkingWithMessages.htm

Une solution très simple pourrait être:

var part = message.BodyParts.OfType<TextPart>().FirstOrDefault(); 
part.Text = part.Text.Replace ("x", "y"); 

Mais Gardez à l'esprit que cette logique suppose que la première partie de texte/* que vous trouvez est celle que vous recherchez.

+0

Merci mais en première ligne: 'System.Collections.GenericIEnumerable ne contient pas de définition pour 'OfType' et pas de méthode d'extension 'OfType' acceptant un premier argument de type System.Collections.GenericIEnumerable could by found (manque-t-il une directive using ou une référence d'assembly?) ' J'utilise MimeKit.1.2.0.0 –

+0

C'est une instruction LINQ. Vous devez ajouter 'using System.Linq;' à votre liste d'utilisations. – jstedfast

+0

Ok, quand je vois mesaj.body dans l'écran de débogage, ça semble changé. Mais quand j'envoie le courrier, le récepteur prend la version inchangée. est-ce qu'il a besoin d'une reconstruction semblable ou quelque chose? –