我正在尝试用 C# 创建一个程序,该程序应该能够在其他人的 Outlook 日历中创建约会。我有代码可以在我自己的日历中创建约会。我在谷歌上搜索,我发现我应该使用模拟。所以我添加了这一行:
service.ImpersonatedUserId = new ImpersonatedUserId(ConnectingIdType.SmtpAddress, emailAddress);
Run Code Online (Sandbox Code Playgroud)
这是我的代码:
private void button2_Click(object sender, EventArgs e) {
try{
ExchangeService service = new ExchangeService();
service.UseDefaultCredentials = true;
service.Credentials = new WebCredentials("Test@domain.com", "password");
service.AutodiscoverUrl("Test@domain.com", adAutoDiscoCallBack);
service.ImpersonatedUserId = new ImpersonatedUserId(ConnectingIdType.SmtpAddress, "Test2@domain.com");
Appointment appointment = new Appointment(service);
// Set the properties on the appointment object to create the appointment.
appointment.Subject = "Tennis lesson";
appointment.Body = "Focus on backhand this week.";
appointment.Start = DateTime.Now.AddDays(2);
appointment.End = appointment.Start.AddHours(1);
appointment.Location = "Tennis club";
appointment.ReminderDueBy = DateTime.Now; …Run Code Online (Sandbox Code Playgroud) 我一直在使用EWS(Exchange Web Service)从Java 8中的共享邮箱中读取电子邮件。
升级到Java 11 (Open JDK 11/Zulu Java 11)后,在阅读电子邮件时遇到异常。
这是例外:
java.lang.NoClassDefFoundError: javax/xml/ws/http/HTTPException在 Microsoft.exchange.webservices.data.core.ExchangeService.internalFindFolders(ExchangeService.java:370) ~[ews-java-api-2.0.jar:na]
我需要在C#中编写一个方法,使用Exchange Web服务(EWS)托管API从邮箱中读取电子邮件并给出当前电子邮件的ItemId/UniqueId,在收件箱中返回下一封电子邮件的ItemId/UniqueId.当前的电子邮件.
此外,由于各种原因,我要求该方法是一个静态无状态方法,也就是说,它不能依赖于在方法调用之间持续存在的任何成员/全局变量.因此,我不能简单地存储对FindItemsResults对象的实例的引用,并在每次调用该方法时移动到下一个Item.
我尝试使用以下代码实现该方法(仅简化示例,无错误检查):
using Microsoft.Exchange.WebServices;
using Microsoft.Exchange.WebServices.Data;
...
...
public string GetNextEmailId(string currentItemId)
{
// set up Exchange Web Service connection
ExchangeService service = new ExchangeService(ExchangeVersion.Exchange2007_SP1);
service.AutodiscoverUrl("example.user@contoso.com");
// create SearchFilter to find next email after current email
ItemId itemId = new ItemId(currentItemId);
SearchFilter sfNextEmail = new SearchFilter.IsGreaterThan(EmailMessageSchema.Id, itemId);
// find next email in inbox
ItemView itemView = new ItemView(1);
itemView.OrderBy.Add(EmailMessageSchema.DateTimeReceived, SortDirection.Ascending);
FindItemsResults<Item> findResults = service.FindItems(WellKnownFolderName.Inbox, sfNextEmail, itemView);
// return unique ID of next email
return findResults.Items[0].Id.UniqueId;
}
Run Code Online (Sandbox Code Playgroud)
但是,当我运行此方法时,它会从service.FindItems行抛出以下异常:
System.ArgumentException:"验证失败.参数名称:searchFilter" …
Outlook.com是否支持EWS?如果不是,使用python访问用户任务和日历的不同方式是什么?
到目前为止,我已经执行了以下操作:
使用EWSWrapper并尝试将suds -ews与python一起使用。当我尝试使用outlook.com帐户时,所有这些实施都会失败。
所以这是我想知道的:
任何帮助表示赞赏。
在Exchange Server上创建或修改元素时,我会获得具有唯一ID的StreamingNotification以及有关该联系人/日历的其他信息,但是如何获取有关已删除项目的信息?
我从哪里获得身份证?或者至少是第一个电子邮件地址或主题?
我正在使用EWS托管API,这是我的代码:
StreamingSubscription subscription =
ser.SubscribeToStreamingNotifications(
new FolderId[] { WellKnownFolderName.Contacts,
WellKnownFolderName.Calendar },
EventType.Created,
EventType.Modified,
EventType.Deleted
);
Run Code Online (Sandbox Code Playgroud) Per Technet -使用PowerShell控制台添加或删除邮箱的电子邮件地址,以下成功删除邮箱中的电子邮件别名:
Set-Mailbox "GenMgr" -EmailAddresses @{remove="GenMgr@domain.com"}
Run Code Online (Sandbox Code Playgroud)
但是,通过远程运行空间调用下面的PSCommand对象会引发System.Management.Automation.RemoteException错误.
command.AddCommand("Set-Mailbox");
command.AddParameter("Identity", "GenMgr");
command.AddParameter("EmailAddresses", "@{remove='GenMgr@domain.com'}");
powershell.Commands = command;
powershell.Invoke();
Run Code Online (Sandbox Code Playgroud)
System.Management.Automation.RemoteException:无法处理参数'EmailAddresses'上的参数转换.无法将值"@ {remove='GenMgr@domain.com'}"转换为"Microsoft.Exchange.Data.ProxyAddressCollection".错误:"地址'@ {remove='GenMgr@domain.com'}'无效:"@ {remove='GenMgr@domain.com'}"不是有效的SMTP地址.域名不能包含空格,它必须有前缀和后缀,例如example.com."
在我看来,问题在于EmailAddresses参数中的'remove'指令.
如何在Windows 8上使用C#和PowerShell远程运行空间来使Exchange 2010删除电子邮件别名?
我正在开发一个需要使用EWS托管API的iOS应用程序.我已经彻底搜索了网络,但我没有取得任何成功.
它需要获取和设置用户的个人资料信息,即用户的显示名称,公司名称,电话号码等.
我有邮箱中文件夹的 folderId 属性。如何使用 EWS 找到文件夹的完整路径?
exchange-server exchangewebservices ews-managed-api exchange-server-2010
我正在使用ews-java-api-2.0.jar连接到office365,下面是示例代码:
package javaapplication6;
import java.net.URI;
import microsoft.exchange.webservices.data.autodiscover.IAutodiscoverRedirectionUrl;
import microsoft.exchange.webservices.data.credential.ExchangeCredentials;
import microsoft.exchange.webservices.data.core.ExchangeService;
import microsoft.exchange.webservices.data.core.enumeration.property.WellKnownFolderName;
import microsoft.exchange.webservices.data.core.service.folder.Folder;
import microsoft.exchange.webservices.data.credential.WebCredentials;
public class JavaApplication6 {
public static class RedirectionUrlCallback implements IAutodiscoverRedirectionUrl {
public boolean autodiscoverRedirectionUrlValidationCallback(String redirectionUrl) {
return redirectionUrl.toLowerCase().startsWith("https://");
}
}
public static ExchangeService connectViaExchangeManually(String email, String password)
throws Exception {
ExchangeService service = new ExchangeService();
ExchangeCredentials credentials = new WebCredentials(email, password);
service.setUrl(new URI("https://outlook.office365.com/EWS/Exchange.asmx"));
service.setCredentials(credentials);
service.setTraceEnabled(true);
Folder inbox = Folder.bind(service, WellKnownFolderName.Inbox);
System.out.println("messages: " + inbox.getTotalCount());
return service;
}
public static ExchangeService connectViaExchangeAutodiscover(String email, String …Run Code Online (Sandbox Code Playgroud) 我不是EWS或TLS 1.2的专家.我不确定如何调查这个问题.
基本上,我的客户端应用程序大量使用EWS,其形式是从Exchange服务器提取数据并从Exchange服务器接收订阅主题的通知.
我有一个客户的问题,我正在为我工作.从客户端应用程序到Exchange服务器使用的EWS连接是否支持TLS 1.2?
Exchange服务器可以是2010年和2013年.
我不确定如何确认这一点,或者默认情况下支持此功能.
欢迎提出任何建议或建议.
编辑:
客户端应用程序是用JavaScript编写的.
Exchange服务器的端点是https://outlook.office365.com/EWS/Exchange.asmx
很明显它是https端点.这是否意味着在TLS 1.2合规性下已经运行良好?
我有一个与交换同步并获取给定 itemids 的电子邮件消息对象的代码:
List<EmailMessage> emails = new List<EmailMessage>();
ServiceResponseCollection<GetItemResponse> response =
MyExchangeService.BindToItems(MyItemIds, PropertySet);
foreach (GetItemResponse getItemResponse in response)
{
if (getItemResponse.Item != null)
{
emails.Add((EmailMessage)getItemResponse.Item);
}
}
Run Code Online (Sandbox Code Playgroud)
现在,emailmessage我得到的对象包含该DateTimeReceived属性,而9/15/2017 5:27:16 AM我希望它也包含时间的毫秒部分。是否可以?
只是有一个关于这个问题的问题,我在使用 EWS 和创建邮件时遇到了这个问题。
\n\nI\xc2\xb4m 创建电子邮件并将其保存到我的收件箱。
\n\n EmailMessage message = new EmailMessage(_exchangeService);\n message.From = emailObject.SenderAddress;\n message.Subject = emailObject.Subject;\n message.Body = emailObject.Body\n message.ToRecipients.Add(email);\n message.CcRecipients.Add(emailObject.CC);\n message.IsRead = false;\n message.Save(WellKnownFolderName.Inbox);\nRun Code Online (Sandbox Code Playgroud)\n\n现在的问题是,EWS 正在将电子邮件创建为草稿。
\n\n是否可以将邮件标记为收入邮件?
\n\n谢谢你!
\n我正在使用办公室365中的EWS API检索电子邮件.当我尝试检索时,将以某种编码格式(以编码格式返回的api)检索发送邮件收件人电子邮件地址,非ASCII电子邮件地址或Unicode电子邮件地址.是否有任何属性或类似的东西来检测电子邮件是否实际上是编码格式,以便我可以解码.
EmailMessage emailMessage;
foreach (var recipient in emailMessage.ToRecipients)
{
ERecipient recip = new ERecipient();
recip.EmailAddress = recipient.Address;
}
Run Code Online (Sandbox Code Playgroud)
如何识别收件人地址是否实际编码?