2017-09-28 2 views
1

Im en utilisant mailKit dans ASP mvc core pour recueillir des e-mails à partir d'une boîte aux lettres IMAP.MailKit De Adresse

Je renvoie le message en utilisant la commande

var message = inbox.GetMessage(uid) 

Cela renvoie tous les résultats du message. De là, je veux accéder à l'adresse e-mail de l'expéditeur (n'incluant pas le nom). Après breakpointing sur la ligne ci-dessus je peux voir que le message variable a la propriété suivante

message 
-From 
--From(Array) 
---From(item) 
----Name (name of the sender) 
----Address(email of the sender) 

Lorsque vous faites référence ci-dessus ci-dessus en utilisant le message que je suis en mesure de recevoir le nom, mais l'adresse ne figure pas (dans les intelisence, Est-ce que quelqu'un sait pourquoi cela serait visible en tant que propriétés de la variable, mais pas accessible via le code?

Je veux simplement

var name = message.From[0].Name.ToString() 
+0

Est-ce que 'GetMessage' renvoie un objet dynamique? Avez-vous une erreur lorsque vous essayez ce code? La propriété 'Name' de type' string' est-elle la propriété? – adiga

+0

aucune erreur, ce n'est tout simplement pas disponible lors de la saisie dans Visual Studio. Mais montre ehn i breakpoint et examine la variable de message – PowerMan2015

Répondre

1

La propriété est un MimeMessage.FromInternetAddressList (plus ou moins List<InternetAddress>).

InternetAddress est une classe de base abstraite pour MailboxAddress et GroupAddress qui ne contient que que vous avez découvert une propriété Name.

Pour obtenir le Address, vous devez d'abord le transformer en MailboxAddress ... mais seulement s'il s'agit en réalité d'un MailboxAddress ou si vous obtenez une exception d'incantation.

InternetAddressList possède une propriété de commodité appelée Mailboxes qui peut être utilisée pour itérer sur une liste aplatie des MailboxAddress contenus dans.