Sende mail med bilder i C#

I denne artikkelen vises hvordan man sender email med innlagt bilde i C#. Ikke som et vedlegg men innlagt i selve mailens html!

Når man sender HTML- mail bør man legge inn en alternativ visning for de mottakere som ikke støtter html. Dette kan gjøres ved å legge inn såkalte AlternateViews når man sender mail. I koden under er et enkelt eksempel på hvordan man sender an mail som kan leses både av de som støtter HTML og de som kun støtter ren tekst. I eksempelet legges det også med et bilde embedded i html-mailen

// Lager en ny maillessage
MailMessage msg = new MailMessage();
msg.To.Add("me@mydomain.com");
msg.Subject = "Mailtest med embedded bilde og html/text visning";

// Lager to alternative visninger for å støtte klienter med og uten HTML
AlternateView plainView = AlternateView.CreateAlternateViewFromString
    ("Denne teksten vises til de som ikke støtter HTML-mail", null, "text/plain");
AlternateView htmlView = AlternateView.CreateAlternateViewFromString 
    ("Her er en mail med innlagt bilde.<img src=cid:avatar>", null, "text/html"); 

// Legger ved bilde som en embedded attachment
LinkedResource avatar = new LinkedResource("c:\avatar.jpg");
avatar.ContentId = "avatar"; 

// id her er samme som cid-referansen i img-taggen!
htmlView.LinkedResources.Add(avatar); 

// Legger inn visning både for de med og uten støtte for HTML
msg.AlternateViews.Add(plainView);
msg.AlternateViews.Add(htmlView); 

// Sender mailen vha smtpclient. Denne kan konfigureres i kode eller i web.config
SmtpClient smtp = new SmtpClient("minsmtpserver.domene.no");
smtp.Send(msg); 

Husk at html-mail (spesielt de med bilder) har en tendens til å havne i junk-mail-mappen din!