通过C#SMTP客户端转发电子邮件并保留时间戳和交付时间

时间:2017-01-04 20:20:14

标签: c# email smtp exchange-server pop3

我写了一个C#客户端,从我的POP3邮箱下载电子邮件,然后通过SMTP将它们转发到我的内部交换服务器。

以下代码正常运作。但原始电子邮件中的时间戳和交付时间信息会被覆盖,因此会丢失,因为此代码会创建一个完整的新电子邮件。

是否有机会在不丢失原始电子邮件中的时间戳信息的情况下转发电子邮件?

using (SmtpClient smtp = new SmtpClient())
{
    smtp.Connect(connectionServer["ExchangeServer"], 25);
    try
    {
        smtp.Ehlo(connectionServer["ExchangeServer"] + "." +
            connectionServer["ExchangeServerDomain"] + ".local");
    }
    catch
    {
        success = false;
        smtp.Helo(connectionServer["ExchangeServer"] + "." +
            connectionServer["ExchangeServerDomain"] + ".local");
    }
    smtp.MailFrom("");
    smtp.RcptTo(popReceipient);
    smtp.DataFromFile(path);
    smtp.Disconnect();
}

2 个答案:

答案 0 :(得分:0)

这是不可能的。另一个选择是使用OpenPop.Net发送一封单独​​的电子邮件,其中附有原始电子邮件作为" * .eml"大多数电子邮件客户端都可以打开的文件。如果这种方法对你有用,我可以发布一些代码。

答案 1 :(得分:0)

您可以通过IMAP访问目标服务器吗?

如果是这样,您可以使用任意时间戳将邮件附加到INBOX文件夹。如果您可以通过IMAP访问源服务器,您实际上也可以使用INTERNALDATE作为时间戳。