2010-02-23 1 views
6

Как подключить изображение в телеобъекте. Я написал код, приведенный нижеДобавление изображения в тело письма в C#

System.Net.Mail.MailMessage message = new System.Net.Mail.MailMessage(); 
string UserName = "[email protected]"; 
string Password = "my password"; 
message.To.Add(new System.Net.Mail.MailAddress("[email protected]")); 
message.From = new System.Net.Mail.MailAddress("[email protected]");    
message.Subject = "test subject"; 
message.Body = "<img [email protected]'C:\\Sunset.jpg'/>";     
message.IsBodyHtml = true; 
System.Net.Mail.SmtpClient smtpClient = new System.Net.Mail.SmtpClient(); 
smtpClient.Host = "hostname"; 
smtpClient.Port = 25; 
smtpClient.Credentials = new System.Net.NetworkCredential(UserName, Password); 
smtpClient.Send(message); 

код прекрасно, как я получаю сообщение также, но изображение приходит, как [X] внутри тела, а не изображения. Как это решить? Путь правильный?

+0

Благодаря я решаемые message.Body = ""; –

+5

Нет, вы этого не сделали. Шансы, что получатель имеет этот файл, хранящийся в корневом каталоге, равны нулю. –

+1

@HansPassant: Если только электронное письмо не отправляется в OP! ;-) –

ответ

12
string attachmentPath = Environment.CurrentDirectory + @"\test.png"; 
    Attachment inline = new Attachment(attachmentPath); 
    inline.ContentDisposition.Inline = true; 
    inline.ContentDisposition.DispositionType = DispositionTypeNames.Inline; 
    inline.ContentId = contentID; 
    inline.ContentType.MediaType = "image/png"; 
    inline.ContentType.Name = Path.GetFileName(attachmentPath); 

    message.Attachments.Add(inline); 

ссылка: Send an Email in C# with Inline attachments

+0

Ох ... этот подход кажется еще лучше. –

+0

Спасибо, спасибо –

+1

Для любого, кто смотрит на это решение в будущем, чтобы он работал, мне пришлось добавить в свой код следующий тег изображения (My ContendId is «Screenshot"): 'message.Body =" \"\" " ; ' – Grungondola

1

Использовать так называемый LinkedResource. Here вы можете найти инструкции. Успешно это сделали.

Если учебное пособие не помогает, не стесняйтесь и просите разъяснений. :)

0
using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Web.UI; 
using System.Web.UI.WebControls; 
using System.Net; 
using System.IO; 
using System.Net.Mime; 
using System.Net.Mail; 


namespace ItsTrulyFree 
{ 
    public partial class demo_mail : System.Web.UI.Page 
    { 
     protected void Page_Load(object sender, EventArgs e) 
     { 
    enter code here 
     } 
     protected void btnSubmit_Click(object sender, EventArgs e) 
     { 


       MailMessage Msg = new MailMessage(); 
       // Sender e-mail address. 
       Msg.From = new MailAddress(txtUsername.Text); 
       // Recipient e-mail address. 
       Msg.To.Add(txtTo.Text); 
       Msg.Subject = txtSubject.Text; 
       // File Upload path 
       String FileName = fileUpload1.PostedFile.FileName; 


       string mailbody = txtBody.Text + "<br/><img src=cid:companylogo>"; 

      //LinkedResource LinkedImage = new LinkedResource(FileName); 
        //HttpContext.Current.Server.MapPath("/UploadedFiles"); 
      LinkedResource LinkedImage = new LinkedResource(Server.MapPath("~//" + FileName), "image/jpg"); 
       LinkedImage.ContentId = "MyPic"; 
       //Added the patch for Thunderbird as suggested by Jorge 
       LinkedImage.ContentType = new ContentType(MediaTypeNames.Image.Jpeg); 

       AlternateView htmlView = AlternateView.CreateAlternateViewFromString(mailbody+ 
        " <img src=cid:MyPic>", 
        null, "text/html"); 

       htmlView.LinkedResources.Add(LinkedImage); 
       Msg.AlternateViews.Add(htmlView); 


       SmtpClient smtp = new SmtpClient(); 
       smtp.Host = "smtp.gmail.com"; 
       smtp.Port = 587; 
       smtp.Credentials = new System.Net.NetworkCredential(txtUsername.Text, txtpwd.Text); 
       smtp.EnableSsl = true; 
       smtp.Send(Msg); 
       Msg = null; 
       Page.RegisterStartupScript("UserMsg", "<script>alert('Mail sent thank you...');if(alert){ window.location='SendMail.aspx';}</script>"); 
      } 
      //catch (Exception ex) 
      //{ 
      // Console.WriteLine("{0} Exception caught.", ex); 
      //} 
     } 

} 
Смежные вопросы