Мне очень интересно. Я новый найм, и я работаю над приложением, которое вызовет MS 365 api и сканирует нужный почтовый ящик. Моя цель - отфильтровать любые письма с вложениями, получить имя отправителя, тему отправителя и, наконец, вложение. Это консольное приложение, которое будет работать на сервере, поэтому из того, что я понимаю, для достижения наилучшей производительности структура C# - это путь. Вот где я застрял. Я построил свою структуру с соответствующими свойствами, которые мне нужны. Как ни странно, я устанавливаю свойство байтового массива (я этого никогда не делал). Затем в моей функции я вызываю api, а затем создаю список своей структуры, чтобы добавить каждое электронное письмо в качестве объекта, который, как я считаю, улучшит производительность. Теперь я могу получить отправителя электронной почты и не подвергаться никаким проблемам, потому что это строки. Но теперь, как я могу получить вложение, чтобы сделать это полный объект электронной почты в памяти. Это фрагмент моего кода.Получение вложения электронной почты в структуру C#
Struct:
struct Emailed_Expenses
{
private string sender;
private string subject;
private byte [] attachment;
public string Email_Sender
{
get
{
return sender;
}
set
{
sender = value;
}
}
public string Email_Subject
{
get
{
return subject;
}
set
{
subject = value;
}
}
public byte[] Email_Attachment
{
get
{
return attachment;
}
set
{
attachment = value;
}
}
}
электронной гусеничный
public static List<Emailed_Expenses> Get_Star_Mailbox()
{
//var star_user = "*******@dell.com";
OutlookServicesClient star_Mail_Box = Start_OutLook_Services();
List<Emailed_Expenses> star_Inbox = new List<Emailed_Expenses>();
try
{
var Email_Box = star_Mail_Box.Users["******@dell.com"].Messages.ExecuteAsync().Result;
var messages = Email_Box.CurrentPage;
//var messages = star_Mail_Box.Me.Folders["Inbox"].Messages.OrderByDescending(m => m.DateTimeReceived).Take(10).ExecuteAsync();
foreach (var message in messages)
{
if (message.Attachments.CurrentPage.Count > 0)
{
Emailed_Expenses email = new Emailed_Expenses
{
Email_Sender = message.Sender.ToString(),
Email_Subject = message.Subject.ToString(),
>>>>>>>>Email_Attachment = byte [message.Attachments],<<<<< this is what I am talking about !!!!*****
};
star_Inbox.Add(email);
}
}
}
я теперь это может показаться немного наивным, но я работаю над этим в течение около 11 часов, и я не нашел ни одного примеры на линии, которые могут помочь мне приложить привязанность к моей структуре.
Основная цель: Я хотел бы прочитать вложение электронной почты в мою структуру.
Я могу сказать вам, что ваша структура неверна, я никогда не работаю с этим API, но одно письмо может иметь несколько вложений. Таким образом, вы должны иметь в своем классе List свойство. Также вам нужно иметь отдельные вложения классов, в которых у вас есть идентификатор свойств (по крайней мере, я помню, что у них были идентификаторы), имя и контент, которые будут байтами []. В вашем коде сообщения. Приложения должны содержать все вложенные вложения. Вот что я думаю. –
mybirthname
Вы правы, когда указали, что несколько приложений, я был очень слеп к этому спасибо.Не могли бы вы немного объяснить класс приложения, пожалуйста. Извините, если я беспокоюсь, но это ново для меня тоже, но две головы лучше, чем одна. – EasyE
Вы должны закодировать все сообщения. В message.Attachments [0] у вас должны быть свойства Name, ID (возможно) или что-то вроде контента. Ваш класс Attachment должен иметь структуру ID-> string (возможно, guid guid, как я уже сказал, я не знаю API), Name-> string, Content-> byte []. Закрепите вложения, сохраняя данные в своем классе вложения, после этого добавьте вложение в свой список в свой почтовый класс. –
mybirthname