我一直在做一堆关于如何从EWS交换中获得邮件跟踪报告的研究,而且似乎找不到任何东西。我打算构建一个刮擦日志文件的应用程序,但是如果我可以通过EWS来完成,那么对于我所做的更好。有任何想法吗?EWS邮件跟踪报告
回答
我终于能够为我的问题创建一个解决方案。我在C#中使用Powershell来发送命令来交换和解析消息跟踪日志。为此,您需要确保您用于连接交换的用户有权使用MessageTrackingLog作为交换。我使用的用户可以访问记录管理角色。这里是允许我连接并获取消息跟踪日志的代码。
using System;
using System.Collections.Generic;
using System.IO;
using System.Net;
using System.Security.Cryptography.X509Certificates;
using System.Text;
using System.Management.Automation;
using System.Collections.ObjectModel;
using System.Management.Automation.Runspaces;
using System.Security;
using System.Management.Automation.Remoting;
namespace ExchangeConnection
{
class ExchangeShell
{
//Credentials
const string userName = "username";
const string password = "password";
private PowerShell InitializePS()
{
PSCredential credential = new PSCredential(userName, SecurePassword());
WSManConnectionInfo connectionInfo = new WSManConnectionInfo(new Uri("exchange server url/Powershell"), "http://schemas.microsoft.com/powershell/Microsoft.Exchange", credential);
connectionInfo.AuthenticationMechanism = AuthenticationMechanism.Kerberos;
connectionInfo.MaximumConnectionRedirectionCount = 5;
connectionInfo.SkipCNCheck = true;
connectionInfo.OpenTimeout = 999999;
Runspace runspace = RunspaceFactory.CreateRunspace(connectionInfo);
runspace.Open();
PowerShell powershell = PowerShell.Create();
powershell.Runspace = runspace;
return powershell;
}
private SecureString SecurePassword()
{
System.Security.SecureString securePassword = new System.Security.SecureString();
foreach (char c in password)
{
securePassword.AppendChar(c);
}
return securePassword;
}
public void GetMessageTrackingLog(string sender)
{
PowerShell ps = InitializePS();
ps.AddCommand("Get-MessageTrackingLog");
ps.AddParameter("Start", DateTime.Now.AddHours(-24).ToString());
ps.AddParameter("ResultSize", "Unlimited");
ps.AddParameter("Sender", sender);
ps.AddParameter("EventId", "SEND");
Collection<PSObject> results = ps.Invoke();
Console.WriteLine("|----Sender----|----Recipients----|----DateTime----|----Subject----|");
foreach (var r in results)
{
string senders = r.Properties["Sender"].Value.ToString();
string recipients = r.Properties["Recipients"].Value.ToString();
string timestamp = r.Properties["Timestamp"].Value.ToString();
string subject = r.Properties["MessageSubject"].Value.ToString();
string eventID = r.Properties["EventID"].Value.ToString();
string messageInfo = r.Properties["MessageInfo"].Value.ToString();
Console.WriteLine("{0}|{1}|{2}|{3}", sender, recipients, timestamp, subject);
}
ps.Dispose();
ps.Runspace.Dispose();
}
}
}
我认为Office 365报告Web服务将是比EWS更好的解决方案,因为它提供了大量适合您需求的邮件流量报告。这里有更多信息:Office 365 Reporting web service以及所有Exchange特定报告在此处列出:Exchange reports available in Office 365 Reporting web service。 MailTraffic *报告进出组织的消息的所有报告,因此您不必亲自编写该逻辑。
你可以在内部交换服务器上使用它吗? – cal5barton
不,只是Exchange Online/Office 365. –
这就是我遇到的问题。我有一个预置Exchange 2010服务器。 – cal5barton
- 1. Umbraco审计跟踪报告
- 2. Git的状态报告的跟踪文件未经跟踪
- 3. 跟踪邮件
- 4. php和mysql用户跟踪和报告
- 5. 去bug跟踪/报告系统?
- 6. 代码气味报告/跟踪工具
- 7. Laravel 5.2邮件跟踪器
- 8. 跟踪电子邮件
- 9. 跟踪邮件状态
- 10. Google Analytics(分析)事件跟踪报告浮夸事件值
- 11. Google Analytics(分析) - 事件跟踪未报告
- 12. GA:我们在哪里看到事件跟踪报告?
- 13. Git的报告未经跟踪的.gitignore文件,不存在
- 14. SSRS报告不会显示在事件探查器跟踪中
- 15. 谷歌分析事件跟踪 - 使报告用户友好
- 16. 用户邮件跟踪位置(在阅读邮件时跟踪用户位置)
- 17. SSRS - 邮件执行报告
- 18. PHP邮件错误报告
- 19. 事件跟踪不会在报表
- 20. 获得警告跟踪
- 21. 跟踪点击Flash广告
- 22. 跟踪Facebook广告用户
- 23. 在电子邮件上保留跟踪
- 24. PHP跟踪邮件和链接点击
- 25. 电子邮件跟踪 - Apple Mail
- 26. 跟踪电子邮件回复
- 27. 在PHP中的电子邮件跟踪
- 28. 电子邮件跟踪谷歌分析
- 29. 跟踪发送的电子邮件
- 30. PHP跟踪电子邮件和回复
您还在寻找解决方案吗?您的邮件跟踪报告需要什么信息? –
@MimiGentz是的,我仍然在寻找解决方案。我需要能够通过收件人列表获取每个用户发送的所有电子邮件,以确定发送的电子邮件是内部还是外部。 – cal5barton