Я не могу получить вложения из сообщения CDO
, проанализированного из файла EML
.
Переменная attachment
в foreach (var attachment in message.Attachments)
не определяется как Microsoft.Exchange.WebServices.Data.Attachment.attachment
, но какobject
.
Ниже приведен мой фрагмент кода. Любая помощь будет оценена.
public static void ReplyFromEmailFile(string savedEmlFullFilePath)
{
InitExchangeService();
CDO.Message message = LoadEmlFromFile(savedEmlFullFilePath);
EmailMessage mail = new EmailMessage(service);
//Attachment count is 1 (pdf file)
AppLogger.LogInfo("count: " + message.Attachments.Count.ToString());
foreach (var attachment in message.Attachments)
{
//System.__ComObject
AppLogger.LogInfo(attachment.GetType().ToString());
if (attachment is FileAttachment)
{
//not reached
FileAttachment fileAttachment = attachment as FileAttachment;
fileAttachment.Load();
fileAttachment.Load(AppConfig.EmailSaveFilePath + fileAttachment.Name);
FileStream fs = new FileStream(AppConfig.EmailSaveFilePath + fileAttachment.Name, FileMode.OpenOrCreate);
mail.Attachments.AddFileAttachment(fileAttachment.Name, fs);
}
}
mail.Body = message.HTMLBody;
mail.ToRecipients.Add("user@test.com");
mail.SendAndSaveCopy();
}
public static CDO.Message LoadEmlFromFile(string savedEmlFullFilePath)
{
CDO.Message msg = new CDO.MessageClass();
ADODB.Stream stream = new ADODB.StreamClass();
stream.Open(Type.Missing, ADODB.ConnectModeEnum.adModeUnknown, ADODB.StreamOpenOptionsEnum.adOpenStreamUnspecified, String.Empty, String.Empty);
stream.LoadFromFile(savedEmlFullFilePath);
stream.Flush();
msg.DataSource.OpenObject(stream, "_Stream");
msg.DataSource.Save();
stream.Close();
return msg;
}