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

Foi útil?

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);
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top