2016-08-09 6 views
2

SendGrid v3 API 및 C# 라이브러리 (v7)를 사용하여 전자 메일을 보내고 있습니다. 이메일에 PNG 헤더가 있습니다. 헤더는 다음과 같이 포함됩니다 : C# 코드에서 SendGrid - 이미지가 HTML 전자 메일에 표시되지 않습니다.

<img src="cid:emailheader"/> 

내가 (주제에, 내용에서) 같은 콘텐츠 ID

VAR 메일 = 새로운 메일과 함께 첨부 파일로 이미지를 전송;

var headerPath = HttpContext.Current.Server.MapPath("~/Resources/email-header.png"); 

var attachment = new SendGrid.Helpers.Mail.Attachment(); 
attachment.ContentId = "emailheader"; 
attachment.Content = Convert.ToBase64String(File.ReadAllBytes(headerPath)); 
attachment.Type = "image/png"; 
attachment.Filename = "email-header.png"; 
mail.AddAttachment(attachment); 

var send = sg.client.mail.send.post(requestBody: mail.Get()); 

나는 이미지가 제대로 부착

enter image description here

+0

나는 당신이 첨부 파일로 그 일을 대신 HTML 메일 본문에 이미지를 포함 할 필요가 있다고 생각합니다. –

+0

'cid '와 함께 사용하기 위해 첨부 할 때 내용 처리를'inline'으로 설정해야한다고 생각합니다. 여기를 참조하십시오 : https://github.com/sendgrid/sendgrid-csharp/blob/master/SendGrid/SendGrid/Helpers/Mail/Mail.cs#L990 –

답변

1

에 표시하더라도, 그것은 소스가 발견되지 말한다 이메일을 열 때 그러나 나는, Sendgrid에 대한 전문가 모르겠지만 나는 거기에서 발견했다 blog post 이것은 당신의 html에서 직접 인라인 인코딩을 제안했다. 이렇게하면 첨부 파일을 추가 할 필요가 없습니다. (저는 이것을 아주 많이 사용합니다)

<img alt="My Image" src="data:image/jpeg;base64,/9j/4S/+RXhpZgAATU0AKgA...more encoding" /> 

어쩌면 이것은 주위를 둘러 쌀 수 있습니다. 두 번째 대안으로

: 사진과 함께 이메일을 보내는 내가 링크 된 자원을 가진 AlternateView를 추가 할 여기

System.Net.Mail

을 사용하고 있습니다.

AlternateView htmlView = AlternateView.CreateAlternateViewFromString(html, null, "text/html"); 
LinkedResource imageResource = new LinkedResource(Imagepath + "Monitoring.png", "image/png") 
{ 
    ContentId = "1", 
    TransferEncoding = System.Net.Mime.TransferEncoding.Base64 
}; 
htmlView.LinkedResources.Add(imageResource); 
message.AlternateViews.Add(htmlView); 

HTML의 구문은 내가이 도움말을 희망

<img src="cid:1"> 

를 사용하는 것과 동일합니다. Butti

0

이미지를 HTML 본문에 포함하십시오. <html> <body> <img src="cid:emailheader"/> ' `

관련 문제