Frank (no reg): Multipart Message / link rel styleshee & cid

Beitrag lesen

Hallo zusammen,

ich möchte gern Emails (intern) verschicken, schön mit Corporate Identity (Logo und Styles). Message Body ist HTML und Encoding ist UTF-8. Funktionieren tut das ganze auch schon soweit via .Net 2.0 / C# / System.Net.MailMessage.

Ich generiere mittels XSLT ein HTML Dokument mit folgendem Inhalt (gekürzt):

  
<?xml version="1.0" encoding="utf-8" standalone="yes"?>  
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">  
<html xmlns="http://www.w3.org/1999/xhtml" >  
<head>  
  <title>Report</title>  
  <link rel="stylesheet" href="cid:styles" type="text/css" media="screen" />  
</head>  
<body>  
  <img src="cid:companylogo" style="width:994px;height:96px;border:none;" alt="company logo" />  
    <h2>Hello !!</h2>  
</body>  
</html>  

Das ganze verschicke ich so

  
using (MailMessage mm = new MailMessage())  
{  
    mm.To.Add(this.recipientList);  
    mm.IsBodyHtml = true;  
    mm.Subject = "Hello ... testing multipart messages";  
    mm.SubjectEncoding = Encoding.UTF8;  
    // define alternate view  
    AlternateView avHtml = new AlternateView(context.Server.MapPath("./Resources/TestEmail.html"), new ContentType("text/html; charset=utf-8"));  
    // create the styles resource  
    LinkedResource lsStyles = new LinkedResource(context.Server.MapPath("./gfx/styles.css"), new ContentType("text/css; charset=utf-8"));  
    lsStyles.ContentId = "styles";  
    avHtml.LinkedResources.Add(lsStyles);  
    // create the logo resource  
    LinkedResource lsLogo = new LinkedResource(context.Server.MapPath("./gfx/cp_header.jpg"), MediaTypeNames.Image.Jpeg);  
    lsLogo.ContentId = "companylogo";  
    lsLogo.TransferEncoding = TransferEncoding.Base64;  
    avHtml.LinkedResources.Add(lsLogo);  
    // text view  
    AlternateView avText = AlternateView.CreateAlternateViewFromString("Hello ... in plain text", Encoding.UTF8, MediaTypeNames.Text.Plain);  
    // add the views to the mail message object  
    mm.AlternateViews.Add(avHtml);  
    mm.AlternateViews.Add(avText);  
    // send off  
    smtp.Send(mm);  
    // dispose  
}  

  • Mail kommt an
  • Mail wird in Outlook 2003 gelesen
  • Mail wird im HTML Modus angezeigt
  • Company Logo und Styles kommen mit (wenn ich die cid anders bennene, bekomme ich die beiden Sachen als att124.jpg usw)
  • Company Logo wird angezeigt

Problem: -> Styles aus dem CSS-Stylesheet File werden nicht angewendet

Stellt sich die Frage:

  • liegt es am Outlook 2003
  • liegt es am Versenden mit LinkedResource (Fehler von meiner Seite?)
  • liegt es an .net (System.Net.MailMessage)
  • funktioniert dies für Stylesheets bzw. link rel="Stylesheet" gar nicht

Hat da evt jemand von euch eine Idee, wie man das Problem beheben könnte?

Vielen Dank vorab.
Frank