मैं निम्नलिखित कोड का उपयोग करके EWS एपीआई का उपयोग करके अपना Email सहेज रहा हूं। हालांकि, जब मैं सहेजे गए .eml और .mht प्रारूप में भी खोलता हूं, तो यह <tags> स्वरूपण के साथ पूर्ण पाठ में होता है।

क्या इसके मूल स्वरूप के साथ email.Body के मूल HTML प्रारूप को सहेजने का कोई तरीका है?

private static void saveEmailAsEML(EmailMessage email)
{
    {
        string to = "test@mail.com";
        string from = "test@mail.com";
        string subject = "test subject";
        string body = email.Body.();
        string emailDir = @"C:\\Temp\\Email";
        string msgName = @"email.eml";

        Console.WriteLine("Saving e-mail...");

        using (var client = new SmtpClient())
        {
            MailMessage msg = new MailMessage(from, to, subject, body);
            client.UseDefaultCredentials = true;
            client.DeliveryMethod = SmtpDeliveryMethod.SpecifiedPickupDirectory;
            client.PickupDirectoryLocation = emailDir;
            try
            {
                client.Send(msg);
            }
            catch (Exception ex)
            {
                Console.WriteLine("Exception caught: {0}",
                ex.ToString());
                Console.ReadLine();
                System.Environment.Exit(-1);
            }
        }

        var defaultMsgPath = new DirectoryInfo(emailDir).GetFiles()
          .OrderByDescending(f => f.LastWriteTime)
          .First();
        var realMsgPath = Path.Combine(emailDir, msgName);

        try
        {
            File.Move(defaultMsgPath.FullName, realMsgPath);
            Console.WriteLine("Message saved.");
        }
        catch (System.IO.IOException e)
        {
            Console.WriteLine("File already exists. Overwrite it ? Y / N");

            var test = Console.ReadLine();

            if (test == "y" || test == "Y")
            {
                Console.WriteLine("Overwriting existing file...");
                File.Delete(realMsgPath);
                File.Move(defaultMsgPath.FullName, realMsgPath);
                Console.WriteLine("Message saved.");
            }
            else
            {
                Console.WriteLine("Exiting Program without saving file.");
            }
        }
        Console.WriteLine("Press any key to exit.");
        Console.ReadLine();
        }
    }
0
gymcode 22 अगस्त 2019, 12:18

1 उत्तर

सबसे बढ़िया उत्तर

आप अनिवार्य रूप से कुछ गुणों से संदेश को फिर से जोड़ रहे हैं। संपूर्ण MIME संदेश (सभी शीर्षलेखों, अनुलग्नकों आदि के साथ) को क्यों नहीं पकड़ें?

देखें https://docs.microsoft.com/en-us/exchange/client-developer/exchange-web-services/how-to-export-items-by-using-ews-in-exchange

1
Dmitry Streblechenko 22 अगस्त 2019, 23:01