我有几个客户/供应商通过电子邮件向我发送报告.其中一些文件非常庞大,需要从电子邮件中删除并保存在文件共享中进行处理,以及控制邮箱大小.
任何人都可以提供有关自动下载和保存附件的推荐方法的指导.
我在MS Windows环境(客户端和服务器计算机)中.电子邮件位于Microsoft Exchange 2003电子邮件服务器上.
对于跨解决方案(C#)一致性首选使用微软技术的,但我愿意接受任何建议,无论是C#,VBScript中,过Perl,Java,组件我应该购买等.
方案每一天bob@whysendmereportsbyemail.com在john@myemailaddress.com发送主题为"为YYYY-MM-DD活动报告"的电子邮件给我
每个电子邮件都有一个名为"ActivityReport -YYYY-MM-DD-HH-MI-SS.xls"的附件,我需要将其保存在我的文件系统"C:\ FilesFromBob\ActivityReport -YYYY-MM-DD-HH-MI- SS.xls"
在此先感谢您的任何帮助.
使用JoséAdan在http://social.msdn.microsoft.com/Forums/en-US/vstscode/thread/f6dec8c4-9752-4a9b-82fe-0822808fd386/提供的提示,我能够让代码分析进行拼写检查巴西葡萄牙语.
在巴西,在类型和成员名称上混合葡萄牙语和英语是一种常见的做法.我也在源自欧洲的代码中看到了其他语言的这种做法.
所以我想要做的是启用两种语言.
我没有找到任何东西,我在周围搜索,我做了一些实验,如
<CodeAnalysisCulture>en-US;pt-BR</CodeAnalysisCulture>
Run Code Online (Sandbox Code Playgroud)
和
<CodeAnalysisCulture>en-US&</CodeAnalysisCulture>
<CodeAnalysisCulture>pt-BR&</CodeAnalysisCulture>
Run Code Online (Sandbox Code Playgroud)
都没有奏效.第一个打破了编译错误,第二个使用了最后定义的语言.
我几乎可以肯定Code Analysis不支持这个,但作为最后的手段,我问:
Code Analysis是否支持为混合语言拼写检查定义两种语言?
PS:我已经知道自定义词典了.这是我的备份计划.
我有以下函数从高字节和低字节获取一个int:
public static int FromBytes(byte high, byte low)
{
return high * (byte.MaxValue + 1) + low;
}
Run Code Online (Sandbox Code Playgroud)
当我用FxCop分析程序集时,我收到以下严重警告:
CA2233:OperationsShouldNotOverflow
如果没有先验证操作数以防止溢出,则不应进行算术运算.
我无法看到这可能会溢出,所以我只是假设FxCop过于热心.
我错过了什么吗?可以采取哪些措施来纠正我所拥有的(或至少使FxCop警告消失!)?
我目前正在编写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
在研究如何使用Exchange Web服务时,我看到了这样的示例
Dim PR_DELETED_ON As New ExtendedPropertyDefinition(26255, MapiPropertyType.SystemTime)
Dim PR_SEARCH_KEY As New ExtendedPropertyDefinition(12299, MapiPropertyType.Binary)
Run Code Online (Sandbox Code Playgroud)
第一个参数是一个表示属性ID的int.任何人都可以给我一个指向这些ID号定义位置的指针吗?
系统管理员是否需要安装额外的任何内容才能使EWS托管API在Exchange 2010上为客户端工作?目前我只是通过托管API使用AutoDiscover遇到问题所以我开始认为服务器配置不正确.
此处是否有任何管理员具有设置Exchange 2010以允许通过EWS托管API进行访问的任何经验?
exchange-server exchangewebservices ews-managed-api exchange-server-2010
相当多的应用程序支持插件.
拥有大量插件是否有任何缺点?是否存在可能性能下降的最佳点?
您在应用中看到的最大装配数量是多少?
我正在尝试使用EWS 2010托管API来获取用户邮箱的总大小.我还没有找到一个Web服务方法来获取这些数据,所以我想我会尝试计算它.我在另一个网站上发现了一个关于使用EWS 2007查找邮箱大小的看似适用的问题,但要么我不理解它要求我做什么,要么该方法不适用于EWS 2010.
在代码洞察中,我能够编写我认为是一种递归遍历文件夹结构的方法,并导致收件箱内所有文件夹的总计:
private int traverseChildFoldersForSize(Folder f)
{
int folderSizeSum = 0;
if (f.ChildFolderCount > 0)
{
foreach (Folder c in f.FindFolders(new FolderView(10000)))
{
folderSizeSum += traverseChildFoldersForSize(c);
}
}
folderSizeSum += (int)f.ManagedFolderInformation.FolderSize;
return folderSizeSum;
}
Run Code Online (Sandbox Code Playgroud)
(假设给定文件夹中的文件夹不超过10,000个.这是一个安全的赌注...)
不幸的是,这不起作用.
我正在用这段代码启动递归:
Folder root = Folder.Bind(svc, WellKnownFolderName.Inbox);
int totalSize = traverseChildFoldersForSize(root);
Run Code Online (Sandbox Code Playgroud)
但抛出了Null引用异常,基本上说这[folder].ManagedFolderInformation是一个空对象引用.
为清楚起见,我还试图获得根文件夹的大小:
Console.Write(root.ManagedFolderInformation.FolderSize.ToString());
Run Code Online (Sandbox Code Playgroud)
其中引发了相同的NRE异常,所以我知道一旦你在目录树中达到某个深度,ManagedFolderInformation就不存在了.
有关如何获取用户邮箱总大小的任何想法?我吠叫错了树吗?
使用C#读取Excel文件(XLS和XLSX)并填充数据网格的最佳(免费或付费)是什么,我还希望将数据网格中的任何更改写回文件.
我还应该补充一点,它需要高性能,因为datagrid可以包含大量行(10,000+).
这将用于商业应用程序,因此需要可分发.
这是一个Windows窗体应用程序.
我使用以下代码通过Exchange Web服务托管API保存约会:
Appointment appointment = new Appointment(m_exchangeService);
appointment.Subject = subject;
appointment.Body = body;
appointment.Start = start;
appointment.End = end;
appointment.Save();
Run Code Online (Sandbox Code Playgroud)
当我这样做时,约会将被创建为Outlook中的“会议”。但我只想将其作为普通的约会而不是开会。我该怎么做呢?