【问题标题】:Create mail in Exchange Online inbox programatically以编程方式在 Exchange Online 收件箱中创建邮件
【发布时间】:2015-05-20 12:17:37
【问题描述】:

自从 EWS 几天以来一直面临着一个问题。所以我的情况是;

我打算以编程方式同步 GMAIL 和 EXCHANGE ONLINE。所以这就是我所做的;

  • 使用 Gmail API 连接到 Gmail
  • 从 gmail 获取邮件获取电子邮件正文、收件人、发件人、附件和 所有其他的事情
  • 使用 EWS 2.0 在线连接到 Exchange

现在问题来了,如何在收件箱中创建一封看起来像发件人收到的邮件的电子邮件;

这是我做的代码;

_service = new ExchangeService(ExchangeVersion.Exchange2013);
        _service.TraceEnabled = true;
        _service.Credentials = new WebCredentials("admin@xyz.onmicrosoft.com", "password");
        _service.Url = new Uri("https://outlook.office365.com/EWS/Exchange.asmx");
        _service.ImpersonatedUserId = new ImpersonatedUserId(ConnectingIdType.SmtpAddress, "xyz@xyz.onmicrosoft.com");

        EmailMessage message = new EmailMessage(_service);
        Random r = new Random();
        message.Subject = "Email Message";
        message.From = new EmailAddress("xyz@gmail.com");
        message.Sender = new EmailAddress("xyz@gmail.com");
        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);

这样它在收件箱中创建了一封电子邮件,但它显示为草稿邮件。我不想要它,我希望它看起来像 RECEIVED 邮件。

我做错了什么吗?

【问题讨论】:

    标签: exchange-server office365 exchangewebservices


    【解决方案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 之前设置很重要。

    【讨论】:

    • 嘿,杰森,又遇到了一个问题。我还想在 EmailMessage 中创建对话。但是我看到 conversationID 属性是只读的。有什么办法可以做到吗?
    猜你喜欢
    • 2022-05-17
    • 1970-01-01
    • 2014-03-21
    • 1970-01-01
    • 1970-01-01
    • 2014-01-27
    • 1970-01-01
    • 1970-01-01
    • 2012-03-29
    相关资源
    最近更新 更多