加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

C#将邮件移至PST

发布时间:2020-12-16 01:58:12 所属栏目:百科 来源:网络整理
导读:我想使用C#访问我的Outlook发送文件夹,并将邮件移动到我的PST中名为Archive的文件夹中.这是我正在使用的代码,但是我遇到了多个编译错误.这里有更多编码经验的人知道如何实现这一目标吗? static void MoveMe(){try{ _app = new Microsoft.Office.Interop.Out
我想使用C#访问我的Outlook发送文件夹,并将邮件移动到我的PST中名为Archive的文件夹中.这是我正在使用的代码,但是我遇到了多个编译错误.这里有更多编码经验的人知道如何实现这一目标吗?

static void MoveMe()
{
try
{
    _app = new Microsoft.Office.Interop.Outlook.Application();
    _ns = _app.GetNamespace("MAPI");
    _ns.Logon(null,null,false,false);
    Application.ActiveExplorer().Session.GetDefaultFolder(Outlook.OlDefaultFolders.olFolderOutbox);
    Outlook.Items SentMailItems = SentMail.Items;
    Outlook.MailItem newEmail = null;
    foreach (object collectionItem in SentMailItems)
    {
        moveMail.Move(Archive);
    }
}
catch (System.Runtime.InteropServices.COMException ex)
{
    Console.WriteLine(ex.ToString());
}
finally
{
    _ns = null;
    _app = null;
    _inboxFolder = null;
}
}

评论中的错误列表:

>只能将赋值,调用,递增,递减和新对象表达式用作语句
>无法找到类型或命名空间名称“电子邮件”(您是否缺少using指令或程序集引用?)
>当前上下文中不存在名称“A_Sent”
>当前上下文中不存在名称“moveMail”
>当前上下文中不存在名称“SentMail”

解决方法

这是一个如何获取源文件夹(SentItems)并将它们移动到PST(存档)的示例.

using Outlook = Microsoft.Office.Interop.Outlook; 

public void MoveMyEmails()
    {
        //set up variables
        Outlook.Application oApp = null;
        Outlook.MAPIFolder oSource = null;
        Outlook.MAPIFolder oTarget = null;
        try
        {
            //instantiate variables
            oApp = new Outlook.Application();
            oSource = oApp.Session.GetDefaultFolder(Outlook.OlDefaultFolders.olFolderSentMail);
            oTarget = oApp.Session.Folders["Archive"];
            //loop through the folders items
            for (int i = oSource.Items.Count; i > 0; i--)
            {
                move the item
                oSource.Items[i].Move(oTarget);
            }
        }
        catch (Exception e)
        {
            //handle exception
        }
        //release objects
        if (oTarget != null)
        {
            System.Runtime.InteropServices.Marshal.ReleaseComObject(oTarget);
            GC.WaitForPendingFinalizers();
            GC.Collect();
        }
        if (oSource != null)
        {
            System.Runtime.InteropServices.Marshal.ReleaseComObject(oSource);
            GC.WaitForPendingFinalizers();
            GC.Collect();
        }
        if (oApp != null)
        {
            System.Runtime.InteropServices.Marshal.ReleaseComObject(oApp);
            GC.WaitForPendingFinalizers();
            GC.Collect();
        }

    }

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读