Отправка электронной почты с приглашением календаря и HTML не отображается правильно - PullRequest
0 голосов
/ 08 октября 2018

Я пытаюсь отправить письмо, содержащее html со встроенными изображениями, а также приглашение календаря (.ics).Я проверил, что оба элемента по крайней мере работают по отдельности.

Если я использую Gmail.com для просмотра почты, он отображает все элементы правильно.Отображение информации о событии в верхней части письма и показ текста с изображениями.Проблема заключается в том, что в зависимости от порядка создания alternateViews он работает либо с Outlook, либо с Iphone, он всегда работает с gmail.com/gmailclient, но не со всеми тремя одновременно.

        SmtpClient sc = new System.Net.Mail.SmtpClient(IP);
        MailMessage msg = new MailMessage();
        msg.From = new System.Net.Mail.MailAddress("demomail@hotmail.com", "bob");

        string mailTo = "client@gmail.com";

        msg.To.Add(new MailAddress(mailTo, "Client Name"));
        msg.Subject = "Send Calendar Appointment Email";
        string mailBody = $"<br><div class=\"dagsordenMødeDato\"> Her er dagsordenen for mødet 10-10-2018 14:45:00 </div><br> <br><ul class=\"dagsordenListe\"><li>Leasing til dig</li><li>Pension</li><li>Garantkunde</li><li>Dine fordele</li></ul><br> <div class=\"bekrivelseAfVedhæftning\">Jeg har vedhæftet et dokument.</div>";
        string icsContent = System.IO.File.ReadAllText(@"H:\hjemmelavetICS.ics");

ЕслиalternateView для календаря помещается перед alternateView for Html в коде, затем он работает на «Почте» для iphone

        ContentType contype = new ContentType("text/calendar");
        contype.Parameters.Add("method", "REQUEST");
        contype.Parameters.Add("name", "Invitation.ics");
        contype.CharSet = "utf-8";
        AlternateView avCal =
            AlternateView.CreateAlternateViewFromString(icsContent, contype);
        msg.AlternateViews.Add(avCal);




            LinkedResource inlineRådgiver = new LinkedResource(
            @"K:\MEDARBEJDERBILLEDER\Signatur Notes\" + "fn" + ".jpg",
            MediaTypeNames.Image.Jpeg);
        inlineRådgiver.ContentId = "raadgiverID";
        inlineRådgiver.ContentType.Name = "Raadgiver.jpg";


        LinkedResource inlineKampagne = new LinkedResource(
            @"K:\MEDARBEJDERBILLEDER\Signatur Notes\" + "Kampagne" + ".jpg",
            MediaTypeNames.Image.Jpeg);
        inlineKampagne.ContentId = "kampagneID";
        inlineKampagne.ContentType.Name = "Kampagne.jpg";

        var htmlContentType =
            new System.Net.Mime.ContentType("text/html");
        htmlContentType.CharSet = "utf-8";
        string embededHtml =
            "<a href=\"https://www.sparthy.dk/\"><img src=cid:raadgiverID alt=\"medarbejder\"></p></a><a href=\"https://www.sparthy.dk/om-sparekassen/nyheder-generelt/1912-garantmoder-2018\"><img style=\"border: 0;\" src=cid:kampagneID alt=\"kampagne\"></a>";
        string fullHtml = mailBody + embededHtml;
        var avHtmlBody = AlternateView.CreateAlternateViewFromString(fullHtml, htmlContentType);
        avHtmlBody.LinkedResources.Add(inlineRådgiver);
        avHtmlBody.LinkedResources.Add(inlineKampagne);
        msg.AlternateViews.Add(avHtmlBody);

        sc.Send(msg);

Однако, если я добавляю альтернативное представление для html перед каландром, он работает для Outlook.

Я целую неделю ломаю голову над этим, любая помощь будет признательна.

...