我尝试过这个并没有太大的成功.基本上我需要远程使用EWS登录Exchange.
问题是我不知道用户是否已登录确定,或者凭据是否错误,因为我什么都没收到!如果我提供了错误的凭据,软件就会继续!
有没有我缺少的东西,我已经检查了有关EWS的MSDN内容,它向您展示了如何连接到交换,但没有关于验证凭据的内容!
下面是我目前要连接的代码.
public void connect(string Email, string Password)
{
try
{
_useremail = Email;
_userpass = Password;
// Define the credentials to use.
var credentials = new WebCredentials(_useremail, _userpass);
_ExchangeServer = new ExchangeService(ExchangeVersion.Exchange2010_SP1);
_ExchangeServer.Credentials = credentials;
_ExchangeServer.Url = new Uri(_ExchangeEWSURL);
_ExchangeServer.Timeout = 60;
_ExchangeServer.KeepAlive = true;
_ExchangeConnected = true;
}
catch (Exception ex)
{
_ExchangeConnected = false;
throw ex;
}
}
Run Code Online (Sandbox Code Playgroud)
正如你目前所看到的,我只是在课堂上将bool值设置为true.有任何想法吗?
我已经能够使用php-ews API从Exchange 2010收件箱成功检索未读电子邮件.但是,在我收到电子邮件之后,我想将电子邮件的IsRead属性设置为true,以便下次我收到电子邮件时不会显示这些邮件.
有人这样做过吗?
编辑:
这是我尝试设置IsRead标志的方式:
$message_id = ''; //id of message
$change_key = ''; //change key
$response = $ews->GetItem($request);
//print_r($response);exit;
if( $response->ResponseMessages->GetItemResponseMessage->ResponseCode == 'NoError' &&
$response->ResponseMessages->GetItemResponseMessage->ResponseClass == 'Success' ) {
$a = array();
$message = $response->ResponseMessages->GetItemResponseMessage->Items->Message;
$a['message_body'] = $message->Body->_;
$a['sender'] = $message->From->Mailbox->EmailAddress;
$a['subject'] = $message->ConversationTopic;
$data[] = $a;
//process the message data.
$messageType = new EWSType_MessageType();
$messageType->IsRead = true;
$path = new EWSType_PathToUnindexedFieldType();
$path->FieldURI = 'message:IsRead';
$setField = new EWSType_SetItemFieldType();
$setField->Message = $messageType;
$setField->FieldURI = $path;
$u = new …Run Code Online (Sandbox Code Playgroud) 我正在构建一个可以自动回复某些电子邮件的小客户端.我想为这些回复添加自定义互联网标题.
我试图做的是将扩展属性设置为我收到的电子邮件,并使用该EmailMessage.Reply方法.
但它不起作用.我也试过用EmailMessage.CreateReply.但是,它会创建一个ResponseMessage没有SetExtendedProperty方法的对象.
这是代码的相关部分:
private static readonly ExtendedPropertyDefinition _redFlag = new ExtendedPropertyDefinition(DefaultExtendedPropertySet.InternetHeaders, "X-RED", MapiPropertyType.String);
private static readonly PropertySet _customHeaders = new PropertySet(BasePropertySet.FirstClassProperties, _redFlag);
/* ... some code to connect to Exchange Service ... */
EmailMessage email = EmailMessage.Bind(_service, id, _customHeaders);
email.SetExtendedProperty(_redFlag, "test");
email.Reply(new MessageBody(answer), false);
Run Code Online (Sandbox Code Playgroud) 这可能是一个非常基本的问题,但我还没有找到任何答案。我在 Windows 服务中使用 Exchange Web 服务来监视通过请求订阅发送到我们的 Exchange 2010 服务器的新邮件。一切正常,但问题是如果服务器不可用(例如断电后),则订阅超时,需要重新启动 Windows 服务。有没有办法在超时后续订订阅,或者拉取 EvenType.Status 事件?
到目前为止,这是我的代码:
ExchangeService service;
PullSubscription subscriptionInbox;
private void SetService()
{
service = new ExchangeService(ExchangeVersion.Exchange2010);
service.Url = new Uri("myurl");
service.Credentials = new WebCredentials(emailAddress, pass);
}
private void SetSubscription()
{
if (service == null)
{
SetService();
}
subscriptionInbox = service.SubscribeToPullNotifications(
new FolderId[] { WellKnownFolderName.Inbox },
5,
null,
EventType.NewMail, EventType.Modified);
}
private void DoStuff(object sender, EventArgs e)
{
GetEventsResults eventsInbox = subscriptionInbox.GetEvents();
EmailMessage message;
foreach (ItemEvent itemEvent in eventsInbox.ItemEvents)
{
//Do …Run Code Online (Sandbox Code Playgroud) 我是Powershell脚本的新手,我正在研究用户管理Powershell脚本,但我遇到了一个奇怪的错误.
以下代码在从shell运行时起作用,但在从脚本运行时不起作用:
$UserCredential = Get-Credential
$Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionURI http://servername/Powershell/ -Authentication Kerberos -Credential $UserCredential -AllowRedirection
Import-PSSession $Session
Run Code Online (Sandbox Code Playgroud)
当我Param()在第一行中带有块的脚本中运行它时,它失败并出现以下错误:
Import-PSSession: Cannot bind argument to parameter 'Path' becuase it is an empty string.
Run Code Online (Sandbox Code Playgroud)
Import-PSSession如果我删除我的Param()块,我可以得到工作,但我不知道如何接受我的脚本的命令行参数.如何保留Param()块(或更一般地,接受命令行参数)并仍然能够导入PS会话?
我在试图连接到2010 Exchange服务器的Windows 2008 R2服务器上使用Powershell v2.
更新:
我有一个脚本命名ManageUser.ps1,我从Powershell提示符运行,如
.\ManageUser.ps1 -disableUser -username someuser
Run Code Online (Sandbox Code Playgroud)
该脚本如下所示:
Param(
[switch]$disableUser,
[string]$username
)
$UserCredential = Get-Credential
$Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionURI http://servername/Powershell/ -Authentication Kerberos -Credential $UserCredential -AllowRedirection
Import-PSSession $Session
#more stuff past here... …Run Code Online (Sandbox Code Playgroud) powershell powershell-2.0 windows-server-2008-r2 exchange-server-2010
我们正在构建Exchange 2010的集成.
当我们通过Outlook查看联系人时,该人员的图片下方有一个"备注"字段,其中包含更新信息.
我们能够在其他字段中找到数据,但不能找到这个数据.任何人都知道该字段的调用内容或数据的存储位置.
背影故事
不久前,我被问到是否可以在内部实施大规模电子邮件解决方案,以便我们能够更好地控制敏感信息.我提出了一个两步计划:在Excel/VBA/CDO中开发原型以便用户熟悉,然后分阶段.Net/SQL服务器解决方案以提高速度和稳健性.
什么改变了
进入第二阶段的3个月,管理层决定继续将电子邮件营销外包给另一家公司,这很好.第一个问题是管理层没有对公司采取行动,所以我仍然没有义务让当前的原型工作.
仍然,原型工作,或至少它的确如此.第二个问题出现在我们的Exchange 2003中继服务器与Exchange 2010交换时.事实证明,默认情况下更多的"安全"功能就像限制策略一样被转换,我一直在帮助系统管理员解决服务器配置的问题.发生的事情是,发送+100电子邮件后,服务器开始拒绝发送请求,并出现以下错误:
The message could not be sent to the SMTP server. The transport error code is 0x800ccc67.
The server response was 421 4.3.2 The maximum number of concurrent connections has exceeded a limit, closing transmission channel
Run Code Online (Sandbox Code Playgroud)
不幸的是,我们只能在Marketing发送内容时测试服务器配置,大约每月一次.
下一步是什么?
我正在查看Excel的VBA定时器功能,以帮助限制我的主循环泵,以帮助限制发送请求.这里的第三个问题是,从我从阅读中理解的是,我能得到的最佳精度是1秒钟的计时器.与我们发送的5封电子邮件/秒相反,每秒1封电子邮件会相当长(大约4倍-5倍).这使得3小时的流程变成了一整天的流程,超过了工作人员的可用时间.我想我可以通过每秒发送5封电子邮件来反转速率,但是如果定时器具有更高的精度,则产生更多的突发影响而不是稳定速率.在我看来,这会创建一个不太受控制的过程,我不确定服务器将如何处理突发而不是稳定的速率. 我有什么选择?
我正在使用Java EWS库来搜索用户日历中的约会iCalUid(例如iCalUid我有:) 040000008200E00074C5B7101A82E00800000000F66E2C0D59A9D001000000000000000010000000F7A6AACB779B00429164F39AE6DD6BB9.这是我的Scala代码:
import microsoft.exchange.webservices.data._
import java.net.URI
import java.util.Date
val exchange = {
val service = new ExchangeService(ExchangeVersion.Exchange2010_SP2)
service.setUrl(new URI(host))
service.setCredentials(new WebCredentials(user, pass))
service
}
def calendarFolderFor(email: String) = new FolderId(WellKnownFolderName.Calendar, Mailbox.getMailboxFromString(email))
def findMatchingAppointments(iCalUid: String, email: String) = {
val searchFilter = new SearchFilter.IsEqualTo(AppointmentSchema.ICalUid, iCalUid)
exchange.findItems(calendarFolderFor(email), searchFilter, new ItemView(1)).getItems
}
Run Code Online (Sandbox Code Playgroud)
上面的代码抛出了这个错误:
microsoft.exchange.webservices.data.ServiceResponseException: The property can not be used with this type of restriction.
at microsoft.exchange.webservices.data.ServiceResponse.internalThrowIfNecessary(ServiceResponse.java:262) ~[ews-java-api-1.3-SNAPSHOT.jar:na]
at microsoft.exchange.webservices.data.ServiceResponse.throwIfNecessary(ServiceResponse.java:251) ~[ews-java-api-1.3-SNAPSHOT.jar:na]
at microsoft.exchange.webservices.data.MultiResponseServiceRequest.execute(MultiResponseServiceRequest.java:146) ~[ews-java-api-1.3-SNAPSHOT.jar:na]
at …Run Code Online (Sandbox Code Playgroud) java scala exchangewebservices exchange-server-2010 ewsjavaapi
我们目前正在使用Exchange Web服务托管API在我们的产品和Exchange之间创建同步服务.具体来说,我们希望在用户日历上来回同步(按时间表)特定的约会.作为同步的一部分,我们不一定要同步所有约会,但已经构建了一些复杂的SearchFilters以仅返回我们想要的约会.我们的问题是,为了使用SearchFilters,我们需要使用ExchangeService.FindItems方法,但此方法仅返回重复事件的主重复.我们的另一个选择是使用ExchangeService.FindAppointment,这将为我们执行Recurrence Expansion,但是有一个新问题,我们只能使用开始和结束日期限制结果约会.看看如何实现ExchangeService.FindAppointment,我们可以看到它是使用FindItems方法实现的,这让我相信我应该能够告诉ExchangeService.FindItems方法进行重复扩展.
如何使用复杂的SearchFilter从交换中获取扩展约会列表?
c# exchangewebservices appointment ews-managed-api exchange-server-2010
我想看看我是否可以在错误代码上获得一些帮助.我的最后一个脚本是为邮箱设置一个SMTP地址,但我刚才用这个代码作为例子.
Set-Mailbox jsmith -AntispamBypassEnabled $false
if ($LastExitCode -eq 1)
{
echo "Exit Code 1" $lastexitcode
}
else
{
echo "Exit Code 0" $lastexitcode
}
Run Code Online (Sandbox Code Playgroud)
我的期望是,我第一次运行命令,它完成工作,我得到成功的错误代码.第二次运行命令时,powershell会返回以下内容.
Warning: The command completed successfully but no settings have been modified.
Run Code Online (Sandbox Code Playgroud)
我希望能够获得3种情况的错误代码.(它有效,它失败了,然后上面的那个它起作用,但没有做出任何改变.)我似乎无法找到任何这方面的例子,并且非常感谢一些建议.
谢谢.
迈克尔
好的,我收到了很好的回复,现在我正在使用以下代码.我必须修改数千个对象,它们都将处于不同的错误代码,因此我需要能够将任何条件写入日志文件.我在整个脚本中都有一堆环境变量,所以最后,我要把"User Passed/Failed"$ EmailAddress $ DisplayName等.....
Try { Set-Mailbox jsmith -AntispamBypassEnabled $false -ErrorAction Stop - WarningVariable Warn }
Catch { Exit 2 } Write-Host "Exit Code 2"
if ($Warn) { Exit 1 } Write-Host "Exit Code 1"
else { Exit 0 } …Run Code Online (Sandbox Code Playgroud) c# ×5
powershell ×2
.net ×1
appointment ×1
email ×1
ewsjavaapi ×1
java ×1
php ×1
scala ×1
set ×1
throttling ×1
vba ×1
winforms ×1