Reutilización de flujos de memoria. Imágenes adjuntas.
Estaba tratando de enviar un gráfico directamente desde mi ventana de Windows al cuerpo del correo.
Aquí, enlazo “runtimeImage.png” con MemoryStream.
System.Net.Mail.Attachment _ms1 = new System.Net.Mail.Attachment(Attachments(Data[i][4].ToString()), "runtimeImage.png");
mail.Attachments.Add(_ms1);
mail.Body += "<img src='runtimeImage.png'>";
Aquí convierto el gráfico a una imagen y creo un MemoryStream.
private MemoryStream Attachments(string type)
{
getChartData(type);
byte[] bytes = null;
using (MemoryStream memoryStream = new MemoryStream())
{
chart.SaveImage(memoryStream, ChartImageFormat.Png);
bytes = memoryStream.ToArray();
}
return new MemoryStream(bytes);
}
Pero cada vez que envío el correo, solo la primera imagen se incluye en el cuerpo del correo y la imagen no cambia. ¿Cómo puedo limpiar y reutilizar MemoryStream?
Nota: Soy nuevo en el desarrollo (graduado reciente) y lo estoy haciendo por curiosidad.
davy.ai
Para limpiar y reutilizar el MemoryStream, simplemente puedes llamar al método
MemoryStream.SetLength(0)
antes de escribir nuevos datos en él. Esto restablecerá el MemoryStream a su estado inicial y eliminará cualquier dato anterior.Aquí tienes cómo puedes modificar tu método
Attachments
para limpiar y reutilizar el MemoryStream:Al restablecer el MemoryStream antes de cada uso, deberías poder enviar varios gráficos en el mismo cuerpo de correo electrónico sin problemas.