Desidero recuperare tutte le e-mail nella cartella Posta in arrivo utilizzando l'API gestita EWS e memorizzarle come .eml
. Il problema è nel recupero (1) tutti i mail con (2) tutte le intestazioni (come da, verso, soggetto) (sto mantenendo le informazioni di quei valori di from
, to
e altre proprietà da qualche altra parte, così ho bisogno di loro troppo) e (3)byte[] EmailMessage.MimeContent.Content
. In realtà mi manca la comprensione diRecupero di tutte le e-mail in Posta in arrivo dai servizi Web di Exchange API gestita e memorizzazione come file .eml
Microsoft.Exchange.WebServices.Data.ItemView
,Microsoft.Exchange.WebServices.Data.BasePropertySet
eMicrosoft.Exchange.WebServices.Data.ItemSchema
ecco perché mi sto trovando difficile.
Il mio codice primario è:
Quando creo PropertySet
come segue:
PropertySet properties = new PropertySet(BasePropertySet.FirstClassProperties, ItemSchema.MimeContent);
ottengo seguente eccezione:
The property MimeContent can't be used in FindItem requests.
Non capisco
(1) Che cosa questi ItemSchema
e BasePropertySet
sono
(2) E come dovremmo usarli
Così ho rimosso ItemSchema.MimeContent
:
PropertySet properties = new PropertySet(BasePropertySet.FirstClassProperties);
Ho scritto semplice codice seguente per avere tutte le mail in posta in arrivo:
ItemView view = new ItemView(50);
view.PropertySet = properties;
FindItemsResults<Item> findResults;
List<EmailMessage> emails = new List<EmailMessage>();
do
{
findResults = service.FindItems(WellKnownFolderName.Inbox, view);
foreach (var item in findResults.Items)
{
emails.Add((EmailMessage)item);
}
Console.WriteLine("Loop");
view.Offset = 50;
}
while (findResults.MoreAvailable);
Sopra ho tenuto la dimensione della pagina di ItemView
a 50, per retr non avere più di 50 mail alla volta, e poi compensare per 50 per ottenere le 50 mail successive se ce ne sono. Tuttavia va in loop infinito e stampa continuamente Loop
sulla console. Quindi devo capire male pagesize
e offset
. Voglio capire
(3) quello pagesize
, offset
e offsetbasepoint
in ItemView
costruttore significa
(4) come si comportano e
(5) come usarli per recupera tutte le mail nella posta in arrivo
Non ho trovato nessun articolo online che spieghi bene questi, ma solo dando il codice s amples. Apprezzerà la spiegazione a livello di domanda, nonostante possa girare a lungo.
Ha lavorato a lungo sul retro. Se ricordo che è corretto, possiamo salvarlo solo come eml. Immagino tu voglia sapere se possiamo salvarlo come messaggio. Ho ragione? Se sì, possiamo ottenere msg solo quando lavoriamo da Outlook interno. Non ho trovato lavoro in giro per recuperare msg con EWS. Ma non c'è niente di sbagliato in eml, è lo standard. – Mahesha999
'Come lo si salva solo come eml?' Frammento di codice sorgente su di esso ?. Giusto, comunque, tu dici che posso ottenere *** *** SOLO *** dentro * Outlook * (usando l'automazione di Outlook.Application). – Kiquenet
non ti ha preso completamente. Estratti da salvare come eml possono essere trovati qui: [1] (https://social.msdn.microsoft.com/Forums/en-US/ba30ebb2-f1c9-4963-9451-932f2710db73/how-to-save-email- to-disk-as-eml-o-msg-while-using-exchange-web-services-to-read-inbox-mail-in # ae7564c8-ee17-40c9-bfe7-7071bdb411ed), [2] (https://stackoverflow.com/a/6610727/1317018) – Mahesha999