отправка изображения в почту в asp - PullRequest
1 голос
/ 20 мая 2011

Я использую код C # для отправки почты другому пользователю. это прекрасно работает, когда я отправляю текст в нем .. Теперь я хочу отправить изображение так, чтобы изображение, которое я послал, открывалось в его папке входящих. означает, что изображение должно идти как тело сообщения, а не как вложения. Я использую код для отправки изображения как:

    System.Net.Mail.Attachment attach =
                new System.Net.Mail.Attachment(
                    "C:\\Documents and Settings\\All Users\\Documents\\My Pictures\\Sample Pictures\\Winter.jpg");
            Random Rgen = new Random();
            attach.ContentId = Rgen.Next(100000, 9999999).ToString();
            attach.ContentDisposition.Inline = true;
  MailMessage m = new MailMessage();
 m.From = new MailAddress("swe@gmail.com");
            m.To.Add(new MailAddress("qwe@gmail.com"));
  m.IsBodyHtml = true;

            m.Body = "<html><body><h1>Picture</h1><br><img src='cid:" + attach.ContentId + "'></body></html>";
            //m.Body = inline.ToString();
            // m.Body = "<img src='cid:" + attach.ContentId + "'>";
            SmtpClient client = new SmtpClient("smtp.gmail.com");
            client.Credentials = new System.Net.NetworkCredential("swe@gmail.com", "swe");
            client.EnableSsl = true;

            client.Send(m);

но изображение не отправляется как сообщение ..

пожалуйста, помогите мне ..

Ответы [ 3 ]

0 голосов
/ 20 мая 2011

Я думаю, все, что вам нужно сделать, это указать формат вашей почты. т.е.

m.BodyFormat = MailFormat.Html;

Может быть, это даст вам другую идею. У меня была похожая задача (закодирован для интранета). так что ... я загрузил изображения на веб-сервер, чтобы у меня уже были URI. и в коде позади я использовал эти URI как источник изображения.

mail.Body = "<html><body><img src='" + img_uri + "'></body></html>";
0 голосов
/ 20 мая 2011

Пожалуйста, попробуйте это: Найдено здесь

Public Sub EmbeddedImages()

        'create the mail message
        Dim mail As New MailMessage()

        'set the addresses
        mail.From = New MailAddress("from@fromdomain.com", " Display Name")
        mail.To.Add("to@todomain.com")

        'set the content
        mail.Subject = "This is an embedded image mail"

        'first we create the Plain Text part
        Dim palinBody As String = "This is my plain text content, viewable by
        those clients that don't support html"
        Dim plainView As AlternateView =
        AlternateView.CreateAlternateViewFromString(palinBody, Nothing,
        "text/plain")
        'then we create the Html part
        'to embed images, we need to use the prefix 'cid' in the img src value
        Dim htmlBody As String = "<b>This is the embedded image 
        file.</b><DIV>&nbsp;</DIV>"
        htmlBody += "<img alt="""" hspace=0 src=""cid:uniqueId"" align=baseline 
        border=0 >"
        htmlBody += "<DIV>&nbsp;</DIV><b>This is the end of Mail...</b>"
        Dim htmlView As AlternateView =
         AlternateView.CreateAlternateViewFromString(htmlBody, Nothing,
         "text/html")

        'create the AlternateView for embedded image
        Dim imageView As New AlternateView("c:\attachment\image1.jpg",
        MediaTypeNames.Image.Jpeg)
        imageView.ContentId = "uniqueId"
        imageView.TransferEncoding = TransferEncoding.Base64

        'add the views
        mail.AlternateViews.Add(plainView)
        mail.AlternateViews.Add(htmlView)
        mail.AlternateViews.Add(imageView)

        'send mail
        SendMail(mail)

End Sub ' End EmbedImages

HTH

0 голосов
/ 20 мая 2011

Это должно работать для вас, чтобы построить ваше вложение

attach.ContentDisposition.Inline = true;
attach.ContentDisposition.DispositionType = DispositionTypeNames.Inline;
attach.ContentId = contentID;
attach.ContentType.MediaType = "image/png";

Удалите тег img из тела и просто сделайте m.Attachments.Add(attach);

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...