Tôi muốn tìm nạp tất cả thư trong thư mục Hộp thư đến bằng API được quản lý EWS và lưu trữ chúng dưới dạng .eml
. Vấn đề là tìm nạp (1) tất cả thư với (2) tất cả các tiêu đề (như từ, đến, chủ đề) (Tôi đang giữ thông tin về các giá trị from
, to
và các thuộc tính khác ở nơi khác, vì vậy tôi cần chúng quá) và (3)byte[] EmailMessage.MimeContent.Content
. Thật sự tôi đang thiếu hiểu biết vềTìm nạp tất cả thư trong Inbox từ API được quản lý của Exchange Web Services và lưu trữ chúng dưới dạng tệp .eml
Microsoft.Exchange.WebServices.Data.ItemView
,Microsoft.Exchange.WebServices.Data.BasePropertySet
vàMicrosoft.Exchange.WebServices.Data.ItemSchema
thats tại sao tôi đang gặp khó khăn.
đang chính của tôi là:
Khi tôi tạo PropertySet
như sau:
PropertySet properties = new PropertySet(BasePropertySet.FirstClassProperties, ItemSchema.MimeContent);
tôi nhận được sau ngoại lệ:
The property MimeContent can't be used in FindItem requests.
Tôi không hiểu
(1) Những gì các ItemSchema
và BasePropertySet
là
(2) Và làm thế nào chúng ta có nghĩa vụ phải sử dụng chúng
Vì vậy, tôi lấy ra ItemSchema.MimeContent
:
PropertySet properties = new PropertySet(BasePropertySet.FirstClassProperties);
tôi đã viết mã sau đơn giản để có được tất cả các thư trong hộp thư đến:
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);
Tôi đã giữ kích thước trang ItemView
đến 50, để truy lại ieve không quá 50 thư tại một thời điểm, và sau đó bù trừ nó bằng 50 để nhận 50 thư tiếp theo nếu có. Tuy nhiên nó đi vào vòng lặp vô hạn và liên tục in Loop
trên bảng điều khiển. Vì vậy, tôi phải hiểu được pagesize
và offset
sai. Tôi muốn hiểu
(3) gì pagesize
, offset
và offsetbasepoint
trong ItemView
constructor nghĩa
(4) cách họ cư xử và
(5) làm thế nào để sử dụng chúng để truy xuất tất cả thư trong hộp thư đến
Tôi không tìm thấy bất kỳ bài viết nào trực tuyến giải thích rõ ràng những điều này nhưng chỉ cung cấp mã amples. Sẽ đánh giá cao giải thích câu hỏi khôn ngoan mặc dù nó có thể biến dài.
Làm việc trên nó dài trở lại. Nếu tôi nhớ nó đúng, chúng ta có thể lưu nó chỉ là eml. Tôi đoán bạn muốn biết nếu chúng ta có thể lưu nó dưới dạng msg. Tôi có đúng không? Nếu có, chúng tôi có thể nhận được thông điệp chỉ khi làm việc từ triển vọng bên trong. Tôi không tìm thấy công việc xung quanh để lấy lại msg với EWS. Nhưng không có gì sai với eml, tiêu chuẩn của nó. – Mahesha999
'Làm thế nào để bạn tiết kiệm nó chỉ như eml?' Mã nguồn mảnh về nó ?. Phải, dù sao, bạn nói rằng tôi có thể nhận được *** msg *** CHỈ bên trong * Outlook * (sử dụng Outlook.Application tự động hóa). – Kiquenet
không giúp bạn hoàn toàn. Các trích dẫn để lưu dưới dạng eml có thể tìm thấy ở đây: [1] (https://social.msdn.microsoft.com/Forums/en-US/ba30ebb2-f1c9-4963-9451-932f2710db73/how-to-save-email- to-disk-as-eml-hoặc-msg-trong khi-sử dụng-trao đổi-web-dịch vụ-to-đọc-hộp thư-thư-trong # ae7564c8-ee17-40c9-bfe7-7071bdb411ed), [2] (https://stackoverflow.com/a/6610727/1317018) – Mahesha999