C# 从Outlook获取附件
我是新来的2C,我被赋予了一项任务。。。我必须编写一个C#代码,将发送的电子邮件附件和邮件主题从Outlook 2007下载到本地驱动器或任何指定位置。我该怎么做?我能够获得收件箱中的附件。有人能帮我通过Outlook发送邮件吗C# 从Outlook获取附件,c#,outlook,C#,Outlook,我是新来的2C,我被赋予了一项任务。。。我必须编写一个C#代码,将发送的电子邮件附件和邮件主题从Outlook 2007下载到本地驱动器或任何指定位置。我该怎么做?我能够获得收件箱中的附件。有人能帮我通过Outlook发送邮件吗 private void ThisAddIn_Startup(object sender, System.EventArgs e) { this.Application.NewMail += new Microsoft.Office.Interop.
private void ThisAddIn_Startup(object sender, System.EventArgs e)
{
this.Application.NewMail += new
Microsoft.Office.Interop.Outlook.
ApplicationEvents_11_NewMailEventHandler(ThisApplication_NewMail);
}
private void ThisApplication_NewMail()
{
Outlook.MAPIFolder SentMail = this.Application.ActiveExplorer().Session.GetDefaultFolder(Outlook.OlDefaultFolders.olFolderSentMail);
Outlook.Items SentMailItems = SentMail.Items;
Outlook.MailItem newEmail = null;
//SentMailItems = SentMailItems.Restrict("[Unread] = true");
try
{
foreach (object collectionItem in SentMailItems)
{
newEmail = collectionItem as Outlook.MailItem;
if (newEmail != null)
{
if (newEmail.Attachments.Count > 0)
{
for (int i = 1; i <= newEmail.Attachments.Count; i++)
{
newEmail.Attachments[i].SaveAsFile(@"C:\TestFileSave\" + newEmail.Attachments[i].FileName);
}
}
}
}
}
catch (Exception ex)
{
string errorInfo = (string)ex.Message
.Substring(0, 11);
if (errorInfo == "Cannot save")
{
MessageBox.Show(@"Create Folder C:\TestFileSave");
}
}
}
private void ThisAddIn\u启动(对象发送方,System.EventArgs e)
{
this.Application.NewMail+=new
Microsoft.Office.Interop.Outlook。
ApplicationEvents\u 11\u NewMailEventHandler(此应用程序\u NewMail);
}
私有作废此应用程序\u NewMail()
{
Outlook.MAPIFolder SentMail=this.Application.ActiveExplorer().Session.GetDefaultFolder(Outlook.OlDefaultFolders.olFolderSentMail);
Outlook.Items SentMailItems=SentMail.Items;
Outlook.MailItem newEmail=null;
//SentMailItems=SentMailItems.Restrict(“[Unread]=true”);
尝试
{
foreach(SentMailItems中的对象集合项)
{
newEmail=collectionItem作为Outlook.MailItem;
if(newEmail!=null)
{
如果(newEmail.Attachments.Count>0)
{
对于(int i=1;i我已经测试了您的代码,SaveAsFile()
方法的Attachment
类实例抛出:
{System.IO.DirectoryNotFoundException:无法保存附件。
路径不存在。请验证路径是否正确。位于
Microsoft.Office.Interop.Outlook.Attachment.SaveAsFile(字符串路径)
…}
因此,有必要确保保存附件的目录存在
private void ThisApplication_NewMail()
{
const string destinationDirectory = @"C:\TestFileSave";
if (!Directory.Exists(destinationDirectory))
{
Directory.CreateDirectory(destinationDirectory);
}
MAPIFolder sentMail = Application.ActiveExplorer().Session.GetDefaultFolder(OlDefaultFolders.olFolderSentMail);
Items sentMailItems = sentMail.Items;
try
{
foreach (object collectionItem in sentMailItems)
{
MailItem newEmail = collectionItem as MailItem;
if (newEmail == null) continue;
if (newEmail.Attachments.Count > 0)
{
for (int i = 1; i <= newEmail.Attachments.Count; i++)
{
string filePath = Path.Combine(destinationDirectory, newEmail.Attachments[i].FileName);
newEmail.Attachments[i].SaveAsFile(filePath);
}
}
}
}
catch (Exception ex)
{
Console.WriteLine(ex);
}
}
private void this应用程序\u NewMail()
{
常量字符串destinationDirectory=@“C:\TestFileSave”;
如果(!Directory.Exists(destinationDirectory))
{
CreateDirectory(destinationDirectory);
}
MAPIFolder sentMail=Application.ActiveExplorer().Session.GetDefaultFolder(OlDefaultFolders.olFolderSentMail);
Items sentMailItems=sentMail.Items;
尝试
{
foreach(sentMailItems中的对象集合项)
{
MailItem newEmail=作为MailItem的collectionItem;
如果(newEmail==null)继续;
如果(newEmail.Attachments.Count>0)
{
对于(int i=1;i维护一个列表,该列表将存储发件人的姓名,然后检查最近邮件的发件人在列表中包含的条件(如果是而不是下载)
private void ThisApplication_NewMail()
{
const string destinationDirectory = @"C:\TestFileSave";
List<string> senderList = new List<string>();
if (!Directory.Exists(destinationDirectory))
{
Directory.CreateDirectory(destinationDirectory);
}
MAPIFolder sentMail = Application.ActiveExplorer().Session.GetDefaultFolder(OlDefaultFolders.olFolderSentMail);
Items sentMailItems = sentMail.Items;
try
{
foreach (object collectionItem in sentMailItems)
{
MailItem newEmail = collectionItem as MailItem;
senderEmailAdd = newEmail.SenderEmailAddress;
if (newEmail == null) continue;
if (newEmail.Attachments.Count > 0 && senderList.Contains(senderEmailAdd))
{
for (int i = 1; i <= newEmail.Attachments.Count; i++)
{
string filePath = Path.Combine(destinationDirectory, newEmail.Attachments[i].FileName);
newEmail.Attachments[i].SaveAsFile(filePath);
}
}
}
}
catch (Exception ex)
{
Console.WriteLine(ex);
}
}
private void this应用程序\u NewMail()
{
常量字符串destinationDirectory=@“C:\TestFileSave”;
列表发送者列表=新列表();
如果(!Directory.Exists(destinationDirectory))
{
CreateDirectory(destinationDirectory);
}
MAPIFolder sentMail=Application.ActiveExplorer().Session.GetDefaultFolder(OlDefaultFolders.olFolderSentMail);
Items sentMailItems=sentMail.Items;
尝试
{
foreach(sentMailItems中的对象集合项)
{
MailItem newEmail=作为MailItem的collectionItem;
senderEmailAdd=newEmail.SenderEmailAddress;
如果(newEmail==null)继续;
如果(newEmail.Attachments.Count>0&&senderList.Contains(senderEmailAdd))
{
对于(int i=1;i是否希望从收件箱中选定的电子邮件中获取附件?