我目前正在编写Exchange 2007传输代理,以替换来自特定发件人的所有传出邮件中的某些邮件头.我成功地成功替换了"From"SMTP标头,但重写"Return-Path"标头似乎不起作用.
为了实现这一切,我编写了一个自定义的SmtpReceiveAgent并订阅了OnEndOfData事件,如下所示:
private static void MyAgent_OnEndOfData(ReceiveMessageEventSource source, EndOfDataEventArgs e)
{
try
{
var address = e.MailItem.Message.From.SmtpAddress;
if (address.ToLower().EndsWith("[internal email domain]"))
{
// replace the From: header - WORKING FINE!
e.MailItem.Message.From = new EmailRecipient("[displayname]",
"[email address]");
// replace the Return-Path: header - NOT WORKING!
var headerList = e.MailItem.Message.RootPart.Headers;
var header = (AddressHeader)headerList.FindFirst("Return-Path");
var newheader = new AddressHeader("Return-Path") { Value = "[email address" };
headerList.ReplaceChild(newheader, header);
}
}
catch (Exception ex)
{
// do something useful here
}
}
Run Code Online (Sandbox Code Playgroud) exchange-server smtp exchange-server-2007 exchange-transport-agents
我正在使用EWS并希望从公司的交换中获取全球地址列表.我知道如何检索个人联系人列表.
API文档中的所有示例都涉及更新用户信息,但没有具体说明如何检索它们.
我甚至尝试过以下列出文件夹,但它没有正确的结果.
private static void ListFolder(ExchangeService svc, FolderId parent, int depth) {
string s;
foreach (var v in svc.FindFolders(parent, new FolderView(int.MaxValue))) {
Folder f = v as Folder;
if (f != null) {
s = String.Format("[{0}]", f.DisplayName);
Console.WriteLine(s.PadLeft(s.Length + (depth * 2)));
ListFolder(svc, f.Id, depth + 1);
try {
foreach (Item i in f.FindItems(new ItemView(20))) {
Console.WriteLine(
i.Subject.PadLeft(i.Subject.Length + ((depth + 1) * 2)));
}
} catch (Exception) {
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
虽然问题已经提出(如何从Exchange Server获取联系人列表?),但这个问题特别涉及使用EWS获取全局地址列表,而此问题在一般级别上请求建议.
我们正在使用EWS在某些邮箱上生成一些分析。
这部分是获得对话的计数/名称/开始/结束。对话类似于Outlook 2010在按对话分组时显示它们的方式。
我希望能够使用ConversationId对项目进行分组,但这似乎仅是Exchange 2010的功能。
我可以在文件夹中按主题分组,以简单地了解线程...但是,这不能像Outlook 2010那样处理拆分的对话-特别是,它不能处理引入已发送邮件中的回复(这些对我们很重要-如果不查看答复,就无法获得良好的指标)。
我当前用于获取线程信息的代码如下所示:
private IEnumerable<EmailThread> GetThreads(Folder folder)
{
var view = new ItemView(int.MaxValue) {PropertySet = new PropertySet(BasePropertySet.IdOnly)};
// view.PropertySet.Add(ItemSchema.ConversationId); - Can't use this as we're stuck on Exchange 2007 !!!
view.PropertySet.Add(ItemSchema.Subject);
view.PropertySet.Add(ItemSchema.DateTimeReceived);
var grouping = new Grouping(ItemSchema.Subject, SortDirection.Descending, ItemSchema.DateTimeReceived, AggregateType.Maximum);
var groupResults = folder.FindItems(view, grouping);
return groupResults.Select(x => new EmailThread
{
Name = x.Items.First().Subject,
Items = x.Items.Count,
StartDate = x.Items.Last().DateTimeReceived, // Assume last in thread is first email
EndDate = x.Items.First().DateTimeReceived // Assume first in …
Run Code Online (Sandbox Code Playgroud) c# outlook exchange-server exchange-server-2007 exchangewebservices
我是Exchange空间编程的新手.
我想在c#中开发交换插件.这个插件应该能够获取所有消息(所有电子邮件ID的消息),并根据一些规则插件应该能够对消息进行一些操作.
谢谢,克里希纳
c# exchange-server exchange-server-2007 exchangewebservices c#-4.0
有没有人知道将通过MS Exchange Server 2007 Web服务连接的开源PHP类(最好是BSD或MIT许可证).肥皂?
我正在寻找一个更高级别的类,它具有通过发送消息的功能.网络服务.
php exchange-server exchange-server-2007 exchangewebservices
我们将Exchange集成到我们的CRM(日记和电子邮件)中; 我们通过SQL 2008服务器中的CRL函数完成此操作,该服务器处理与Exchange 2007 Web服务的所有身份验证和通信.然后,CLR将函数作为常规函数和存储过程呈现给SQL Server中的开发人员,使编码简单.我们正在通过SSIS处理我们的同步以同步数据.
不幸的是,我不能只将Exchange 2003安装到我们的网络上我们的销售团队正在协商销售,这将要求我将代码迁移回Exchange 2003上工作.当我想要回溯接口时,什么是主要的Exchange 2003和Exchange 2007 Web服务之间的功能差异?
我可能面临的任何潜在陷阱是什么?
谢谢 :)
如何知道Exchange WebService URL,我有Exchange服务器版本2007,我正在尝试编写一个小型C#控制台应用程序来从Exchange服务器收集一些数据,但不知道什么是Exchange.WebServices Url.AutodiscoverUrl失败.
至于我现在,我知道如何来从Exchange服务器的约会,但只要我想看到的必需和可选的与会者,这些字段是空的......我查了任命吊起并有与会者,除了我.我是否必须以不同方式配置Outlook或者我是否会错过某些内容?
List<Appointment> listOfAppointments = new List<Appointment>();
CalendarFolder cfolder = CalendarFolder.Bind(MyService, WellKnownFolderName.Calendar);
CalendarView cview = new CalendarView(from.ToUniversalTime(), to.ToUniversalTime());
cview.PropertySet = new PropertySet(ItemSchema.Subject);
cview.PropertySet.Add(AppointmentSchema.Start);
cview.PropertySet.Add(AppointmentSchema.End);
cview.PropertySet.Add(AppointmentSchema.Location);
cview.PropertySet.Add(AppointmentSchema.ICalUid);
cview.PropertySet.Add(AppointmentSchema.Organizer);
cview.PropertySet.Add(AppointmentSchema.IsAllDayEvent);
cview.PropertySet.Add(AppointmentSchema.DateTimeCreated);
FindItemsResults<Appointment> result = cfolder.FindAppointments(cview);
Run Code Online (Sandbox Code Playgroud)
这就是我如何获取约会,正如我从例外和追踪和错误中所知,我不需要交换参与者...但也许我错过了一些东西.
exchange-server exchange-server-2007 exchangewebservices ews-managed-api
关于IPM,我有几个问题。如果有人能消除我的疑虑,那就太好了
1)什么是IPM.Note?那是一个日志文件吗?很少的详细信息,以便我能理解
2)当我键入IPM时,在Windows搜索中请注意,它显示了我所有在MS Outlook中的电子邮件。但是我看不到IPM这个词,请注意任何地方。我如何搜索IPM.Note,我如何获取所有email.msg文件
3)IPM是否有可能。注意将在Exchange Server 2007中,还是在本地计算机中?
4)我们将如何从IPM中获悉。请注意所有邮件或未读状态。
5)我们将如何从IPM获悉请注意我们已回复的所有邮件
提前致谢
mapi exchange-server exchange-server-2007 exchangewebservices
使用EWS托管API在C#中工作,我们无法有效地检索存储为内联附件的图像.
端点是显示带有内嵌图像的电子邮件,作为面板中完全形成的html页面.我们目前的代码:
string sHTMLCOntent = item.Body;
FileAttachment[] attachments = null;
if (item.Attachments.Count != 0)
{
attachments = new FileAttachment[item.Attachments.Count];
for (int i = 0; i < item.Attachments.Count; i++)
{
string sType = item.Attachments[i].ContentType.ToLower();
if (sType.Contains("image"))
{
attachments[i] = (FileAttachment)item.Attachments[i];
string sID = attachments[i].ContentId;
sType = sType.Replace("image/", "");
string sFilename = sID + "." + sType;
string sPathPlusFilename = Directory.GetCurrentDirectory() + "\\" + sFilename;
attachments[i].Load(sFilename);
string oldString = "cid:" + sID;
sHTMLCOntent = sHTMLCOntent.Replace(oldString, sPathPlusFilename);
}
}
}
Run Code Online (Sandbox Code Playgroud)
(来源:http: …