[C#] Html email met plaatjes, de beste manier?

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • sig69
  • Registratie: Mei 2002
  • Laatst online: 15:43
Ik ben vanuit C# aan het klooien met het versturen van html emails met een plaatje erin, werkt allemaal prima maar ik loop tegen wat eigenaardigheden aan. Ik test de verstuurde email op drie ontvangende platformen (maar uiteindelijk moet het in elke email client gewoon goed zijn):
• Outlook 2010
• Windows Phone 7
• Exchange webmail

Ik zal hieronder (enigszins versimpeld) posten hoe ik het verstuur en wat de problemen zijn.

1:
C#:
1
2
3
4
5
6
7
var mailMessage = new MailMessage("a@b.nl", "a@b.nl", "Test", "Plain text view");
mailMessage.IsBodyHtml = true;
var mimeType = new ContentType("text/html");
string message = "<html><body><img src="http://www.b.nl/image.gif"/></body></html>";
var htmlView = AlternateView.CreateAlternateViewFromString(message, mimeType);
mailMessage.AlternateViews.Add(htmlView);
new SmtpClient("smtpServer").Send(mailMessage);

+ Werkt op alle ontvangende clients
- Ik krijg op alle clients een security warnig en moet handmatig de plaatjes downloaden

2:
C#:
1
2
3
4
5
6
7
8
9
10
var mailMessage = new MailMessage("a@b.nl", "a@b.nl", "Test", "Plain text view");
mailMessage.IsBodyHtml = true;
var mimeType = new ContentType("text/html");
string message = "<html><body><img src="cid:imageKey"/></body></html>";
var htmlView = AlternateView.CreateAlternateViewFromString(message, mimeType);
var linkedResource = new LinkedResource(@"C:\image.gif");
linkedResource.ContentId = "imageKey";
htmlView.LinkedResources.Add(linkedResource);
mailMessage.AlternateViews.Add(htmlView);
new SmtpClient("smtpServer").Send(mailMessage);

+ Werkt perfect in Outlook en Exchange webmail
- Werkt niet op Windows Phone 7

3:
C#:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
var mailMessage = new MailMessage("a@b.nl", "a@b.nl", "Test", "Plain text view");
mailMessage.IsBodyHtml = true;
var mimeType = new ContentType("text/html");
string message = "<html><body><img src="cid:imageKey"/></body></html>";
var htmlView = AlternateView.CreateAlternateViewFromString(message, mimeType);
var inline = new Attachment(@"C:\image.gif");
inline.ContentDisposition.Inline = true;
inline.ContentDisposition.DispositionType = DispositionTypeNames.Inline;
inline.ContentId = "imageKey";
inline.ContentType.MediaType = "image/gif";
inline.ContentType.Name = "image.gif";
mailMessage.Attachments.Add(inline);
mailMessage.AlternateViews.Add(htmlView);
new SmtpClient("smtpServer").Send(mailMessage);

+ Werkt perfect in Outlook en op Windows Phone 7
- Werkt weer niet in Exchange webmail

Dus tsja, wat moet ik nou? Het liefst heb ik het op alle platformen gewoon goed werken. Mis ik nog iets?

Roomba E5 te koop


Acties:
  • 0 Henk 'm!

  • D-Raven
  • Registratie: November 2001
  • Laatst online: 07-07 14:42
Ik zou me niet blind staren op het feit dat het niet op windows phone 7 werkt. In oktober komt de Mango update, en het zou goed kunnen dat het dan ineens wel werkt.

Overigens wordt methode 1 (en 2) het meest gebruikt omdat de methode met ContentDisposition onbetrouwbaar is i.v.m andere afhandeling tussen email clients.

Acties:
  • 0 Henk 'm!

  • MueR
  • Registratie: Januari 2004
  • Laatst online: 19:50

MueR

Admin Tweakers Discord

is niet lief

Dit probleem ga je niet tof oplossen. Plaatjes (en andere data) moeten altijd expliciet toestemming krijgen wanneer ze vanaf een externe locatie binnengehaald moeten worden. Mocht je daar om heen kunnen werken hoop ik dat het snel gepatched wordt. Ik zit er namelijk niet op te wachten dat er allerlei automatische tracking wordt gedaan via een plaatje.

Attachment images werken vaak niet op webmail, om dezelfde reden. De webmail client zal altijd weigeren iets te tonen wat mogelijk de client kan borken.

Anyone who gets in between me and my morning coffee should be insecure.


Acties:
  • 0 Henk 'm!

  • D-Raven
  • Registratie: November 2001
  • Laatst online: 07-07 14:42
MueR schreef op vrijdag 24 juni 2011 @ 14:20:
Dit probleem ga je niet tof oplossen. Plaatjes (en andere data) moeten altijd expliciet toestemming krijgen wanneer ze vanaf een externe locatie binnengehaald moeten worden. Mocht je daar om heen kunnen werken hoop ik dat het snel gepatched wordt. Ik zit er namelijk niet op te wachten dat er allerlei automatische tracking wordt gedaan via een plaatje.

Attachment images werken vaak niet op webmail, om dezelfde reden. De webmail client zal altijd weigeren iets te tonen wat mogelijk de client kan borken.
Mja dat ook inderdaad. Ik ging eigenlijk automatisch al voorbij aan dat:
- Ik krijg op alle clients een security warnig en moet handmatig de plaatjes downloaden
een minpunt is :+

Acties:
  • 0 Henk 'm!

  • sig69
  • Registratie: Mei 2002
  • Laatst online: 15:43
Als je plaatje in een LinkedResource zit kan het niet gebruikt worden om te tracken toch? Dus ook geen security warning nodig. Ik hou het voorlopig wel op methode 2, leek mij ook de netste.

Roomba E5 te koop


Acties:
  • 0 Henk 'm!

  • CoolGamer
  • Registratie: Mei 2005
  • Laatst online: 12-07 08:13

CoolGamer

What is it? Dragons?

Misschien helpt het als je bij de LinkedResource ook het mime-type opgeeft. Nu laat je die parameter weg. Hij maakt er standaard application/octet-stream van, terwijl het eigenlijk in dit geval image/gif moet zijn.

[ Voor 59% gewijzigd door CoolGamer op 24-06-2011 23:01 ]

¸.·´¯`·.¸.·´¯`·.¸><(((º>¸.·´¯`·.¸><(((º>¸.·´¯`·.¸.·´¯`·.¸.·´¯`·.¸<º)))><¸.·´¯`·.¸.·´¯`·.¸.·´¯`·.¸

Pagina: 1