2015-05-20 8 views
1

Были проблемы со днями с EWS. Итак, мой сценарий;Создайте почту в Exchange Online inbox programatically

Я должен программно синхронизировать GMAIL и EXCHANGE ONLINE. Итак, вот что я сделал;

  • Подключение к Gmail Использование Gmail API
  • получать почту с Gmail получить по электронной почте тела, в, из привязанности и все другие вещи
  • подключиться к Exchange Online с помощью EWS 2.0

Теперь проблема заключается в том, как создать электронное письмо в папке «Входящие», которая выглядит как входящая почта от отправителя;

Вот код, который я сделал;

_service = new ExchangeService(ExchangeVersion.Exchange2013); 
     _service.TraceEnabled = true; 
     _service.Credentials = new WebCredentials("[email protected]", "password"); 
     _service.Url = new Uri("https://outlook.office365.com/EWS/Exchange.asmx"); 
     _service.ImpersonatedUserId = new ImpersonatedUserId(ConnectingIdType.SmtpAddress, "[email protected]"); 

     EmailMessage message = new EmailMessage(_service); 
     Random r = new Random(); 
     message.Subject = "Email Message"; 
     message.From = new EmailAddress("[email protected]"); 
     message.Sender = new EmailAddress("[email protected]"); 
     message.Body = new MessageBody(BodyType.HTML, "<HTML><body><h1>This is a voice mail.</h1></BODY></HTML>"); 
     message.ToRecipients.Add(new EmailAddress("")); 
     message.Save(WellKnownFolderName.Inbox); 

Таким образом, создается электронное письмо во входящих, но оно отображается как черновик письма. Я не хочу этого, я хочу, чтобы это выглядело как ПОЛУЧЕН mail.

Я делаю что-то неправильно?

ответ

1

Вам необходимо установить пару свойств до, сохраняя сообщение.

// Set a delivery time 
ExtendedPropertyDefinition PidTagMessageDeliveryTime = 
    new ExtendedPropertyDefinition(0x0E06, MapiPropertyType.SystemTime); 
DateTime deliveryTime = DateTime.Now; // Or whatever deliver time you want 
message.SetExtendedProperty(PidTagMessageDeliveryTime, deliveryTime); 

// Indicate that this email is not a draft. Otherwise, the email will appear as a 
// draft to clients. 
ExtendedPropertyDefinition PR_MESSAGE_FLAGS_msgflag_read = new ExtendedPropertyDefinition(3591, MapiPropertyType.Integer); 
message.SetExtendedProperty(PR_MESSAGE_FLAGS_msgflag_read, 1); 

Эти свойства не устанавливаемое после деталей сохраняется, поэтому очень важно сделать это до первого Save вызова.

+0

Отлично, работал для меня :) –

+0

Эй, Джейсон, столкнувшись с еще одной проблемой. Я также хочу создавать беседы в EmailMessage. Однако я вижу, что свойство talkID доступно только для чтения. Есть ли способ сделать это? –

Смежные вопросы