标签: exchange-server

Exchange Server和SAS 9.1.3/9.2

有没有人成功地与SAS 9.1.3或9.2中的微软交换服务器进行交互?我知道可以使用SAS Ent完成.指南4.x,但如果常规SAS能够做到这一点,我对这条路线不感兴趣.

exchange-server sas

8
推荐指数
1
解决办法
407
查看次数

为什么我要说服开发人员使用端口587进行所有SMTP通信?

将端口587用于所有客户端到MTA通信的趋势越来越明显.它位于标准跟踪RFC:http://www.ietf.org/rfc/rfc2476.txt

我的问题是"为什么?".为什么有两个SMTP服务器实例在同一台服务器上运行,如果它们都做同样的事情?它提供了什么安全功能,除了给我两个作为管理员进行故障排除的事情.

这似乎是不必要的复杂性,除非ISP阻止端口25,否则不需要.即使这样,如果ISP阻止端口25以防止垃圾邮件,它只是意味着它只需要更多的时间,直到端口587也被阻止,我们将不得不完全使用不同的端口.

看起来我们正在为自己创造更多的工作,而不是解决问题并开始验证SMTP

pop3 exchange-server smtp rfc spam

8
推荐指数
2
解决办法
3705
查看次数

使用EWS查找收件箱文件夹的所有子文件夹

我有以下收件箱文件夹结构:

Inbox
--ABC
----ABC 2
----ABC 3
--XYZ
----XYZ 2
--123
----123 A
----123 B
----123 C
Run Code Online (Sandbox Code Playgroud)

我正在使用Exchange Web服务和以下代码来查找收件箱文件夹的子文件夹:

ExchangeService service = new ExchangeService(ExchangeVersion.Exchange2010);

service.AutodiscoverUrl("MyName@MyDomain.com");
Mailbox mb = new Mailbox("MyName@MyDomain.com");

FindFoldersResults findResults = service.FindFolders(
    WellKnownFolderName.Inbox,
    new FolderView(int.MaxValue));

foreach (Folder folder in findResults.Folders)
{
    Console.WriteLine(folder.DisplayName);
}
Run Code Online (Sandbox Code Playgroud)

这部分有效,因为它返回ABC,XYZ和123文件夹; 不幸的是,它没有返回每个文件夹内的文件夹(ABC 2,ABC 3,XYZ 2,123 A,123 B,123 C).

此外,文件夹可能在其中具有多个级别的子文件夹.

如何编写此代码,以便它将返回所有子文件夹,无论它们的嵌套程度如何?

c# recursion exchange-server exchangewebservices

8
推荐指数
1
解决办法
2万
查看次数

Node.js与MS Exchange EWS集成

我试图使用Node.js来调用SOAP Exchange EWS服务.我创建了一个简单的http客户端,如下所示:

var https = require('https');

var username = 'user';
var password = 'password';
var auth = 'NTLM ' + new Buffer(username + ":" + password).toString('base64');

var options = {
    host : 'exchangehost',
    port : 443,
    method : 'post',
    path : '/Exchange.asmx',
    headers : { Authorization : auth }
};

var request = https.request(options, function(response) {
    console.log('Status: ' + response.statusCode);
};

request.write('<soapenv:Envelope  ...></soapenv:Envelope>');
request.end();
Run Code Online (Sandbox Code Playgroud)

我收到状态码401,我怀疑是因为我没有做NTLM认证涉及的三个步骤(http://www.innovation.ch/personal/ronald/ntlm.html).有没有人知道Node.js模块直接与Exchange EWS通信或使用NTLM进行身份验证,或者我是否需要自己为Node.js实现该协议?非常感谢任何帮助.

exchange-server ntlm exchangewebservices node.js

8
推荐指数
1
解决办法
1万
查看次数

EWS托管API在更新时中断约会HTML邮件正文

我正在使用EWS Java 1.2,尽管C#中的2.0显示完全相同的问题,而Exchange 2010 SP3,因此在汇总3之前的SP2中有关邮件正文的特定错误不是问题.

长话短说:EWS + Exchange =痛苦.在Exchange中使用EWS,您可以创建约会.您可以指定约会的消息正文是HTML,并为其提供一堆HTML.这将执行某种HTML - > RTF转换,当您在Outlook桌面或Web客户端中查看HTML时,它会破坏HTML.好吧,我们可以将HTML定制为在过程中没有被吃掉但仍然看起来不错的东西.

除非您通过更改邮件正文更新约会时,它真的会吃HTML格式.如果它与您在创建时提供的HTML相同并不重要.第二次保存会破坏它,只留下粗体文本,换行符和制表符.就好像它是显示纯文本的几个小块格式,或者它是从转换后的HTML中显示一个非常精简的RTF.真正令人抓狂的是它只在你更新身体后才会发生.

问题是,我通过检查扩展属性,在MFCMAPI和EWS中查看了这些约会(和相关的MeetingRequests,它们以相同的方式覆盖).首次创建约会时,仅填充RTF正文.纯文本和HTML正文为空,RTF同步,本机正文值为2,这意味着它应显示RTF.好的,这是有道理的.

在更新时,所有三种体型都存在.RTF不同步.本机正文值为3,这意味着它应该显示HTML.我签了MFCMAPI.纯文本正文和RTF正文都显示内存不足错误,但打开属性会正确显示.HTML正文存在.根据文档,这应该发生,这是零的原因.最佳主体算法指出,如果填充了本机主体属性,那么将使用它并且全部完成.嗯,这显然没有发生.如果它由于某种原因没有获得该值,那么它将通过条件链.好吧,条件链表明在这种情况下应该显示HTML正文.MFCMAPI同意导出的项目,因为它显示本机主体是HTML正文.OWA会很好地展示它.但Outlook 2010/2013?不.

我在这里结束了我的智慧.无论我做什么,我都无法让桌面Outlook正确显示身体.它似乎是从根本上破坏了服务器端的东西,但没有列出已知的错误(除了前面提到的SP2预卷3问题,这不是这里的情况),我找不到任何解释为什么更新打破它的文档厉害.我能做的最好的事情就是直接在创建时设置pidTagBodyHtml,并从一开始就将其打破.至少那是一致的.

编辑:我已经实现了RTF解压缩算法来窥视内部.果然,用于新约会的RTF消息正文和用于更新约会的RTF消息正文(其中正文更新为几乎相同的约会)是非常不同的!Exchange遵循两个单独的代码路径服务器端,它打破了正文格式!我看到的唯一可能的解决方案是实现压缩和格式化算法,并在客户端中手动构建有效的RTF主体,这不是一个小小的壮举.

html outlook exchange-server exchangewebservices ews-managed-api

8
推荐指数
0
解决办法
1468
查看次数

我们可以使用EWS托管API连接到Exchange 2016吗?

我正在使用EWS托管API 2.2,它在枚举中不显示Exchange版本2016.我可以看到Exchange 2013的版本.那么如何连接到Exchange Server 2016?API是否尚未从Microsoft更新,或者我是否需要使用任何其他API连接到Exchange 2016?

.net exchange-server exchangewebservices ews-managed-api exchange-server-2016

8
推荐指数
1
解决办法
8917
查看次数

将Proxy PAC与EWS API一起使用

我有一个Web应用程序调用EWS托管API连接到office365.

我在MSDN上关注了EWS Managed API 2.0客户端应用程序入门文档.

web.config我指定的代理pac:

<configuration>
  <system.net>
    <defaultProxy useDefaultCredentials="false">
      <proxy autoDetect="False" bypassonlocal="True" scriptLocation="http://example.com:8080/proxy.pac" usesystemdefault="False" />
    </defaultProxy>
  </system.net>
  [...]
</configuration>
Run Code Online (Sandbox Code Playgroud)

我尝试以下列方式连接到Exchange:

public static ExchangeService getExchangeService(String username)
{
    ServicePointManager.ServerCertificateValidationCallback = CertificateValidationCallBack;

    ExchangeService service = new ExchangeService(ExchangeVersion.Exchange2013);
    service.Credentials = new WebCredentials(USER_365, PWD_365, DOMAIN_365);
    service.UseDefaultCredentials = true;

    //I've tried both WebProxy settings, this:
    service.WebProxy = WebRequest.GetSystemWebProxy();
    //And this (with no success):
    //service.WebProxy = WebRequest.DefaultWebProxy;

    //I've also tried Autodiscover...
    service.AutodiscoverUrl(USER_365, RedirectionUrlValidationCallback);
    //...and direct url
    //service.Url = new Uri("https://outlook.office365.com/EWS/Exchange.asmx"); …
Run Code Online (Sandbox Code Playgroud)

.net c# asp.net exchange-server office365api

8
推荐指数
1
解决办法
781
查看次数

如何从Exchange Web服务(2010 SP1)发送HTML(多部分/替代)

当我尝试通过EWS发送带有内嵌图像(附件)的HTML消息时,这个问题就暴露出来了.但是我退回到最简单的形式,发现我甚至无法发送HTML消息.

我使用的是C#,.NET 4,EWS API 1.1,Exchange Server 2010 SP1.

这是我的代码的核心:

ExchangeConnection = new ExchangeService(ExchangeVersion.Exchange2010_SP1);
ExchangeConnection.Credentials = new WebCredentials(Username, Password, Domain);
ExchangeConnection.Url = new Uri(ServiceURI);

string MailBody = @"<html><head></head><body>
    This is a <b>test</b> <strong>HTML</strong> <em>message</em>.<br><br>
    Did it work?</body></html>";

NewMessage = new EmailMessage(ExchangeConnection);
NewMessage.Subject = "Test HTML Message #001";
NewMessage.Body = MailBody;
NewMessage.Body.BodyType = BodyType.HTML;
NewMessage.ToRecipients.Add("tony@zierniemann.com");
NewMessage.Send();
Run Code Online (Sandbox Code Playgroud)

使用该代码,我收到一条消息,内容如下:

Subject: Test HTML Message #001
Thread-Topic: Test HTML Message #001
Thread-Index: Acuy3U6nqQTa4W4ZQu6ueHPb2nPDPg==
Date: Thu, 13 Jan 2011 04:49:48 +0000
Message-ID: <2FDB41070D0AC24DB5BC8B80751063630B74A5@xxxxx.com>
Accept-Language: en-US
Content-Language: en-US …
Run Code Online (Sandbox Code Playgroud)

exchange-server exchangewebservices ews-managed-api exchange-server-2010

7
推荐指数
1
解决办法
2万
查看次数

如何删除PowerShell中的重音?

我有一个脚本,可以在Microsoft Exchange Server和Active Directory中创建用户.因此,虽然通常用户的名字在西班牙有重音符号或ñ,但我想避免使用用户名,以免在旧系统中造成任何不兼容性.

那么,我怎么能像这样清理一个字符串呢?

$name = "Ramón"
Run Code Online (Sandbox Code Playgroud)

那样的?:

$name = "Ramon"
Run Code Online (Sandbox Code Playgroud)

powershell exchange-server active-directory

7
推荐指数
4
解决办法
1万
查看次数

C#MS Exchange将电子邮件移动到文件夹

补充:感谢用户@grapkulec,我正在使用

using Microsoft.Exchange.WebServices.Data;
Run Code Online (Sandbox Code Playgroud)

我正在尝试将电子邮件移动到我已在Outlook中创建的文件夹(使用MS Exchange).到目前为止,我已经能够将电子邮件移动到草稿或其他众所周知的文件夹名称,但没有成功将其移动到我创建的名为"示例"的文件夹中.

foreach (Item email in findResults.Items)
email.Move(WellKnownFolderName.Drafts);
Run Code Online (Sandbox Code Playgroud)

上面的代码有效; 但我不想使用众所周知的文件夹.而且,如果我尝试将代码更改为:

email.Move(Folder.(Example));
Run Code Online (Sandbox Code Playgroud)

要么

email.Move(Folder.["Example"]);
Run Code Online (Sandbox Code Playgroud)

它不移动(在两种情况下都会抛出错误).我已经找到了很多关于如何将电子邮件移动到MSDN,SO和一般C#上的文件夹的示例 - 但仅限于Outlook(草稿,垃圾邮件等)"知名"的文件夹,这些文件不适用于我创建的文件夹.

c# exchange-server email-integration

7
推荐指数
2
解决办法
2万
查看次数