首页 > 解决方案 > C# 电子邮件解析。错误:程序 ... 以代码 0 (0x0) 退出

问题描述

我开发了简单的应用程序来重命名本地存储的电子邮件。电子邮件加载在列表框中,并且有一个重命名按钮。问题是我可以重命名三封电子邮件,而不是应用程序崩溃。没有报告具体错误。这是我的代码...

namespace EmailFilenameRename
{
public partial class Form1 : Form
{

    CultureInfo deCulture = new CultureInfo("de-DE");

    public Form1()
    {
        InitializeComponent();
    }

    private static string[] getAddressParts(string address)
    {
        var splittedAdress = address.Split(' ');
        return splittedAdress.Last().Trim().StartsWith("<")
            ? new[] { string.Join(" ", splittedAdress.Take(splittedAdress.Length - 1)), splittedAdress.Last().Trim(' ', '<', '>') }
            : splittedAdress;
    }

    private void Form1_Load(object sender, EventArgs e)
    {
        DirectoryInfo d = new DirectoryInfo(@"C:\...\in");
        FileInfo[] Files = d.GetFiles("*.eml");
        foreach (FileInfo file in Files)
        {
            listBox1.Items.Add(file.Name);
        }
    }

    private void button1_Click(object sender, EventArgs e)
    {            
        string oldName = @"C:\...\in\" + listBox1.GetItemText(listBox1.SelectedItem);

        var mail = Sasa.Net.Mail.Message.Parse(File.ReadAllText(oldName));

        string dt = mail.Headers["Date"].ToString();

        DateTimeOffset originalTime = DateTimeOffset.Parse(dt, deCulture);
        DateTime utcTime = originalTime.UtcDateTime.ToLocalTime();

        string sTime = utcTime.ToString("yyyyMMdd HHmm");

        string[] sFrom = getAddressParts(mail.From.ToString());
        string sSubject = mail.Subject.Replace(":", "");

        String newName = @"C:\...\in\renamed\" + sTime + " -- " + sFrom[1] + " -- " + sSubject + ".eml";

        File.Copy(oldName, newName);
        File.Delete(oldName);
    }
}

}

我也尝试过使用 MimeKit ......存在同样的问题。

标签: c#emailmimekit

解决方案


推荐阅读