Отправить HTML-документ (Contianing Images) в виде вложения электронной почты C # - PullRequest
1 голос
/ 22 декабря 2009

Я отправляю HTML-документ (содержащий изображения) во вложении электронной почты во время выполнения, используя C #.
Но когда я проверяю полученное электронное письмо, отправленный 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-документ в виде вложения электронной почты, но изображения не отображаются.

Спасибо!

Ответы [ 4 ]

4 голосов
/ 22 декабря 2009
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. HTML-вложения в соответствии с MSDN используют одни и те же объекты, но у меня нет кода для этого.

3 голосов
/ 22 декабря 2009
0 голосов
/ 23 декабря 2009

Поскольку вы отправляете HTML как вложение , а не как тело, простого способа сделать это не существует.

Вот несколько вариантов:

  1. Лучший способ - создать документ MHT (или MHTML) и отправить его в виде вложения.

  2. Вместо добавления HTML-кода в качестве вложения, вы можете заполнить тело письма HTML-кодом, а затем вложить изображения.

  3. Другой вариант - просто создать электронное письмо, вставить изображения в это электронное письмо и добавить его в качестве вложения.

  4. Если получатель будет использовать обновленный браузер, вы можете встроить изображения непосредственно в тег, используя схему URL-адреса данных. http://en.wikipedia.org/wiki/Data_URI_scheme

  5. Как и другой предложенный плакат, используйте абсолютные ссылки в тегах и размещайте изображения где-нибудь.

0 голосов
/ 22 декабря 2009

Если HTML отправляется в виде вложения, я не думаю, что вы можете вставлять в него изображения. HTML это текст, в конце концов.

Если изображение статичное, я думаю, что вам лучше всего ссылаться на изображение по абсолютному пути и размещать изображение на одном из ваших серверов.

...