Я пытаюсь отправить письмо, содержащее 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.
Я целую неделю ломаю голову над этим, любая помощь будет признательна.