conteúdo html escrever em um e-mail usando um fluxo
-
19-09-2019 - |
Pergunta
Eu tenho um fluxo carregado com HTML que eu tenho de uma exportação. I pode tomar este html do fluxo em um byte [] (existe alguma outra maneira?), E eu quero escrever este byte [] para um corpo html mail.
A razão para isso é que eu quero exportar um relatório para html, e usar esses dados no corpo do e-mail, em vez de exportá-lo para PDF e enviá-lo como um anexo.
esperar que o suficiente claro, deixe-me saber se eu preciso acrescentar algo.
Graças
Solução
Eu encontrei-o. É muito simples, apesar de eu não encontrar o resultado que eu gostaria, ter uma saída formatada diretamente para o e-mail, a pergunta era mais sobre como usar os bytes armazenados em um fluxo de saída HTML.
Eu tomo o fluxo e criar um StreamReader:
stream.Position = 0;
StreamReader reader = new StreamReader(stream);
Em seguida, no corpo do objeto e-mail, eu li o conteúdo do fluxo usando o StreamReader:
mail.Body = reader.ReadToEnd();
Isso é tudo. O que você acha?
Outras dicas
Você pode usar uma mensagem Multipart Mime e passar a corrente para o construtor AlternateView bem, apenas não fechar o fluxo ou limpá-lo até depois que você enviou a mensagem (MailMessage.Dispose chamada () para limpeza do punho para você, se você quiser). Se você vai com sua solução, certifique-se de definir mail.IsBodyHtml como true para que o tipo de conteúdo para se ajustar corretamente caso contrário o cliente de correio de recepção pode não exibir o HTML como HTML, uma vez que vão pensar que é texto simples. Se a saída do e-mail parece engraçado em seu cliente de e-mail, então isso é provavelmente por isso.
O código seria algo parecido com isto (truncado para apenas as partes relevantes):
MailMessage message = new MailMessage();
message.AlternateViews.Add(new AlternateView(stream, new ContentType("text/HTML"));
// do NOT set Body, IsBodyHtml, or ContentType on MailMessage or
// you'll mess up the mime types
smtpClient.Send(message);