2017-01-03 9 views
10

tôi tìm thấy giải pháp này cho thấy một hình ảnh trong cơ thể của email: Add image to body of an emailLàm thế nào để loại bỏ hình ảnh như tập tin đính kèm nhưng cho thấy trong cơ thể của email

Và nó hoạt động tốt nhưng nó cũng cho biết thêm các hình ảnh dưới dạng đính kèm để Email.

Attachment inlineLogo = new Attachment(EmailLogo.ImageUrl); 
mailMsg.Attachments.Add(inlineLogo); 
string contentID = "Image"; 
inlineLogo.ContentId = contentID; 

//To make the image display as inline and not as attachment 
inlineLogo.ContentDisposition.Inline = true; 
inlineLogo.ContentDisposition.DispositionType = DispositionTypeNames.Inline; 

//To embed image in email 
mailMsg.Body = "<htm><body> <img height=\"49\" width=\"169\" src=\"cid:" + contentID + "\"> </body></html>"; 

Có một dòng mã với những nhận xét để hiển thị như inline và không phải là tập tin đính kèm nhưng dòng này không hoạt động vì hình ảnh vẫn được gắn vào email:

//To make the image display as inline and not as attachment 
inlineLogo.ContentDisposition.Inline = true; 
inlineLogo.ContentDisposition.DispositionType = DispositionTypeNames.Inline; 

thế nào có thể Tôi dừng hình ảnh khi đính kèm vào email?

+1

Xin xem bài này: http://stackoverflow.com/questions/18358534/send-inline-image-in-email – Creep

+1

là L mất tích từ ' một lỗi đánh máy trong' mailMsg.Body = " ";' dòng hoặc hiện diện trong ứng dụng chính của bạn? – Takarii

+1

Hãy xem [bài đăng này] (http://stackoverflow.com/a/32767496/3110834) để biết một số tùy chọn. –

Trả lời

1

Một giải pháp thay thế có thể được sử dụng để nhúng hình ảnh nội dòng, nhưng cũng không được lọc bởi ứng dụng email (thường là trường hợp ngày nay giống như thư rác) Bạn có thể sử dụng DataURL.

<img src="data:image/<type>;base64,<string>"/> 

nơi loại hình ảnh, tức là jpg, gif, png và là chuỗi base64. Chỉ cần chuyển đổi hình ảnh thành một chuỗi base64 và gán nó vào nguồn sử dụng cú pháp trên

Ví dụ, với một jpeg ...

mailMsg.Body = "<html><body> <img height=\"49\" width=\"169\" src=\"data:image/jpg;base64,<myPictureString>"\"> </body></html>"; 
3

Sử dụng AlternateView để lưu trữ mã html của bạn với hình ảnh nhúng như LinkedResource :

string contentID = "Image"; 

var inlineLogo = new LinkedResource(EmailLogo.ImageUrl, "image/png");  
inlineLogo.ContentId = contentID; 

var htmlView = AlternateView.CreateAlternateViewFromString(
    "<html><body> <img height=\"30\" width=\"30\" src=\"cid:" + contentID + "\"> </body></html>", 
    Encoding.UTF8, "text/html"); 
htmlView.TransferEncoding = TransferEncoding.QuotedPrintable; 
htmlView.LinkedResources.Add(inlineLogo); 

mailMsg.AlternateViews.Add(htmlView); 

PS Nhúng hình ảnh như chuỗi base24 không phải là ý tưởng rất tốt, bởi vì nhiều ứng dụng thư không hỗ trợ khả năng như vậy.

1

Nếu bạn muốn hiển thị hình ảnh trong email, email đó phải tồn tại ở đâu đó. Nó được đính kèm như một phần của tải trọng tin nhắn (bất kể nó được "hiển thị nội tuyến" hay là "tệp đính kèm" đúng) - hoặc được lấy từ máy chủ web từ xa khi người đọc đọc email (và tùy chọn phải chọn "xem hình ảnh")

để không đính kèm hình ảnh để payload email riêng của mình:

  1. Bạn phải đăng cai hình ảnh trên một máy chủ web công cộng để người đọc mở thông điệp có thể truy cập vào nó.
  2. Bạn phải sử dụng URL đủ điều kiện trong nguồn nội dung thư của mình để có thể tìm thấy nó.

Giả sử bạn đã được lưu trữ hình ảnh trên máy chủ web của bạn tại URL sau: http://www.example.com/images/myimage.jpg

... thì nguồn của bạn chỉ đơn giản là nên thay đổi để phản ánh:

mailMsg.Body = "<html><body> <img height=\"49\" width=\"169\" src=\"http://www.example.com/images/myimage.jpg\"> </body></html>"; 

Không cần phải đính kèm nó ở tất cả.

Các vấn đề liên quan