Tendo um problema para enviar uma imagem por e-mail como uma imagem incorporada no corpo. O arquivo de imagem é exibido como um anexo, o que está certo, mas a parte da imagem embutida apenas é exibida como um x vermelho.
Aqui está o que eu tenho até agora
LinkedResource inline = new LinkedResource(filePath);
inline.ContentId = Guid.NewGuid().ToString();
MailMessage mail = new MailMessage();
Attachment att = new Attachment(filePath);
att.ContentDisposition.Inline = true;
mail.From = from_email;
mail.To.Add(data.email);
mail.Subject = "Client: " + data.client_id + " Has Sent You A Screenshot";
mail.Body = String.Format(
"<h3>Client: " + data.client_id + " Has Sent You A Screenshot</h3>" +
@"<img src=""cid:{0}"" />", inline.ContentId);
mail.IsBodyHtml = true;
mail.Attachments.Add(att);
inline.ContentId
, quando deveria estaratt.ContentId
.inline
não é necessário. Prefiro sua pergunta a todas as respostas, pois você realmente não precisa usar umAlternateView
.Respostas:
Tente isto
fonte
Alguns códigos c # mínimos para incorporar uma imagem podem ser:
fonte
LinkedResource
para fazê-lo funcionar no cliente da Web do Hotmail / Outlook.com. FWIW, tentei isso tão bem quanto o @Microsoft DN e funcionou melhor.NewGuid()
, aAttachmentBase
classe (queLinkedResource
herda de) já a cria, se necessário.fonte
Além dos comentários acima, tenho os seguintes comentários adicionais:
"cid:att-001"
isso NÃO funciona no iPhone (nível de patch do final de 2016), em vez disso, use alfanumérico puro"cid:att-001" -> "cid:att001"
Como um aparte. A renderização do Outlook (até mesmo do Office 2015) (ainda a clara maioria para usuários de negócios) requer o uso de HTML estilo TABLE TR TD, uma vez que não suporta totalmente o modelo de caixa HTML.
fonte
Um exemplo ainda mais minimalista:
fonte
Experimente isso.
fonte
Você precisa adicionar LinkedResource em um AlternateView
fonte
fonte
A outra solução é anexar a imagem como anexo e, em seguida, referenciá-la ao código html usando cid. Código HTML:
Código C #:
fonte
fonte
Todos nós temos nossos estilos de codificação preferidos. Isso é o que eu fiz:
fonte
Eu adicionei o código completo abaixo para exibir imagens no Gmail, Thunderbird e outros clientes de e-mail:
fonte