webForumDet fria alternativet

Skicka mejl med inbäddad bild

.NET

1 svar · 547 visningar · startad av doggelito

Medlem sedan juni 20003 076 inlägg
Frågan#1

Hej,
nån som ser nått direkt fel med denna kod?

public void SendArticle(string subject, string imagePath, string imageContentType, string from, string to)
        {
            MailMessage message = new MailMessage();
            message.From = new MailAddress(from);
            message.To.Add(to);
            message.Subject = subject;

            if (!string.IsNullOrEmpty(imagePath))
            {
                WebClient webClient = new WebClient();
                Stream imgStream = webClient.OpenRead("http://www.blablabla.se/minbild.jpg");

                if (imgStream != null)
                {
                    LinkedResource logo = new LinkedResource(imgStream);
                    logo.TransferEncoding = TransferEncoding.Base64;
                    logo.ContentId = "attachedImage";
                    logo.ContentType = new ContentType("text/jpg");
                    AlternateView av1 = AlternateView.CreateAlternateViewFromString("<html><head></head><body><img src=\"cid:attachedImage\"></body></html>", null, "text/html");
                    av1.LinkedResources.Add(logo);

                    message.AlternateViews.Add(av1);
                }

                imgStream.Close();
                webClient.Dispose();
            }

            message.IsBodyHtml = true;

            SmtpClient smtp = new SmtpClient();
            smtp.Send(message);
        }

Nu får jag bara:


[WebException: The request was aborted: The connection was closed unexpectedly.]
   System.Net.ConnectStream.Read(Byte[] buffer, Int32 offset, Int32 size) +6018788
   System.Net.Mime.MimePart.Send(BaseWriter writer) +122
   System.Net.Mime.MimeMultiPart.Send(BaseWriter writer) +283
   System.Net.Mail.Message.Send(BaseWriter writer, Boolean sendEnvelope) +111
   System.Net.Mail.SmtpClient.Send(MailMessage message) +1259

[SmtpException: Failure sending mail.]
   System.Net.Mail.SmtpClient.Send(MailMessage message) +1811

Kommenterar jag bort if (imgStream != null)... så går mejlet iväg, så mejlet i sig fungerar. Men inte med bild! :(

Medlem sedan juni 20003 076 inlägg
#2

Hmm, problemet låg i att jag körde: imgStream.Close();
Struntar jag i att stänga streamen så fungerar det.

Nån vänlig själ som kan förklara det, varför jag inte får köra Close()?

257 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
122 ms — deklarationer (db)
0 ms — hämta statistik (cache)
130 ms — hämta tråd, inlägg och bilagor (db)
124 ms — ändringar (db)