Как получить файл .msg из подписанной почты? - PullRequest
0 голосов
/ 26 марта 2020

Я не могу сохранить файл .msg из подписанного письма. Я могу сохранить любой другой MSG-файл, но получаю исключение при попытке сохранить MSG-файл из подписанного письма. Ниже вы можете увидеть код, который я использую. Исключение выдается в строке mailItem.SaveAs.

if (selObject is Outlook.MailItem)
{
    Outlook.MailItem mailItem = (selObject as Outlook.MailItem);
    mailItem.InternetCodepage = 65000;

    string sIsSigned = mailItem.MessageClass;

    sSubject = mailItem.Subject;

    if (sSubject != null)
    {
        if (iSubject < sSubject.Length)
        {
            sSubject = sSubject.Substring(0, iSubject);
            Logbuch.LogWriter("Subject: " + sSubject, sSavelog);
        }
    }

    string rename = sSubject.Replace("!", "").Replace(@"""", "").Replace(":", "").Replace(@"\", "").Replace("~", "").Replace("$", "").Replace("%", "").Replace("§", "").Replace(@"\", "").Replace("[", "").Replace("<", "").Replace("*", "").Replace(">", "").Replace(@"/", "").Replace("?", "");
    MsgFile = Path.Combine(Environment.GetEnvironmentVariable("Temp") + "\\", rename + "_" + thename + ".msg");
    sAdress = mailItem.SenderEmailAddress;
    if (sAdress != null)
    {
        if (iSender < sAdress.Length)
        {
            sAdress = sAdress.Substring(0, iSender);
            Logbuch.LogWriter("Absender: " + sAdress, sSavelog);
        }
    }
    sCC = mailItem.CC;
    if (sCC != null)
    {
        if (iCC < sCC.Length)
        {
            sCC = sCC.Substring(0, iCC);
        }
    }

    sBCC = mailItem.BCC;
    if (sBCC != null)
    {
        if (iBCC < sBCC.Length)
        {
            sBCC = sBCC.Substring(0, iBCC);
        }
    }
    DateTime Date = mailItem.ReceivedTime;
    FinalDate = Date.ToString().Substring(0, 10);

    mailItem.Permission = OlPermission.olUnrestricted;

    try
    {
        mailItem.SaveAs(MsgFile, Outlook.OlSaveAsType.olMSG);
    }
    catch (System.Exception ex)
    {
        Logbuch.LogWriter(ex.ToString(), sSavelog);
    }
}
...