将Html文档(包含图像)作为电子邮件附件C#发送

时间:2009-12-22 15:30:07

标签: c# email attachment

我使用C#在运行时将Html文档(包含图像)作为电子邮件附件发送 但是当我检查收到的电子邮件时,发送的html文档不包含任何图像。

请指导我如何确保html文档与图像一起发送。

        MailMessage objMailMessage = new MailMessage();
        objMailMessage.From = new MailAddress("aa@gmail.com");

        string[] emailIds = objReportRequest.EmailIds.Split(',');
        foreach (string emailId in emailIds)
        {
            objMailMessage.To.Add(new MailAddress(emailId));
        }

        objMailMessage.IsBodyHtml = true; 
        objMailMessage.Body = messageBody;
        objMailMessage.Subject = "Test Service";
        objMailMessage.Attachments.Add(new Attachment(filePath));

        SmtpClient objSmtpClient = new SmtpClient("smtp.gmail.com");
        objSmtpClient.Credentials = new NetworkCredential("aaa@gmail.com", "aaa");
        objSmtpClient.EnableSsl = true;
        objSmtpClient.Send(objMailMessage);

我收到html doc作为电子邮件附件,但不显示图片。

谢谢!

4 个答案:

答案 0 :(得分:4)

AlternateView htmlView = AlternateView.CreateAlternateViewFromString(message, null, "text/html");
 LinkedResource image = new LinkedResource(@".\images\sample.jpg");
 image.ContentId = "Image";
 message = "<img src=cid:Image>" + message;
 htmlView = AlternateView.CreateAlternateViewFromString(message, null, "text/html");
 htmlView.LinkedResources.Add(image);

您是如何将图像放入HTML电子邮件中的,根据MSDN的html附件使用相同的对象,但我没有专门执行此操作的代码。

答案 1 :(得分:3)

答案 2 :(得分:0)

如果HTML作为附件发送,我认为您不能在其中嵌入图像。毕竟,HTML是文本。

如果图像是静态的,我认为最好的方法是通过绝对路径引用图像,并将图像托管在您的一台服务器上。

答案 3 :(得分:0)

由于您将HTML 作为附件发送而不是作为正文,因此没有一种简单的方法可以执行此操作。

以下是一些选项:

  1. 最好的方法是实际构建MHT(或MHTML)文档,并将其作为附件发送。

  2. 您可能希望使用HTML填充电子邮件正文,然后嵌入图片,而不是将HTML添加为附件。

  3. 另一种选择是简单地构建电子邮件,将图像嵌入电子邮件中,然后将电子邮件添加为附件。

  4. 如果收件人将使用更新的浏览器,您可以使用数据URL方案将图像直接嵌入到标记中。 http://en.wikipedia.org/wiki/Data_URI_scheme

  5. 与另一张建议的海报一样,在标签中使用绝对链接,并在某处托管图像。