Intentando enviar un archivo adjunto desde un string, me tope con la incertidumbre de como pasar un cadena (string) a un stream (flujo) ya que el simple casteo me generaba error
Bueno la idea primeramente era enviar un correo adjunto mediante el metodo Add de la coleccion Attachment
correo.Attachments.Add(New Attachment(strmMemory, "Recordatorio.htm", "text/html"))
pero necesitaba un stream (flujo) y solo tenia el contenido en cadena, y no podia , hasta que llego la
System.IO.MemoryStream
(…)La clase MemoryStream crea secuencias que utilizan como almacén de respaldo la memoria en lugar de un disco o una conexión de red. MemoryStream encapsula los datos almacenados como una matriz de bytes sin signo que se inicializa al crear un objeto MemoryStream; también se puede crear una matriz vacía. Es posible obtener acceso directamente a los datos encapsulados en la memoria. Las secuencias de memoria pueden reducir la necesidad de archivos y búferes temporales en una aplicación.(…)
El ejemplo es algo asi:
Private correo As New System.Net.Mail.MailMessage '...varias lineas de código despues... Dim uniEnco As New UnicodeEncoding Dim aBytes As Byte() = uniEnco.GetBytes(_correoContenido.Cuerpo) Dim strmMemory As New MemoryStream(aBytes) correo.Attachments.Add(New Attachment(strmMemory, "Recordatorio.htm", "text/html"))
y luego me dedique a predicarlo jeje! posteando más a modo de recordartorio y para el que lo necesite algunas vez.
(queria que este en Geeks.ms, ya que lo habia posteado en oto lugar)
Nota:
Luego de investigar por este problema me tope con método CreateAttachmentFromString (lo dice todo el nombre no?), pero como no podía ganarme el «string to stream», decidi realizarlo de la otra forma , pero para la próxima lo uso.
Para los curiosos, los enlaces:
- Encoding (Clase)
Representa una codificación de carácter.
http://msdn2.microsoft.com/es-es/library/86hf4sb8.aspx - UnicodeEncoding (Clase)
Representa una codificación UTF-16 de caracteres Unicode.
http://msdn2.microsoft.com/es-es/library/system.text.unicodeencoding.aspx - ContentType (Clase)
Representa un encabezado Content-Type de protocolo MIME.
http://msdn2.microsoft.com/es-es/library/system.net.mime.contenttype.aspx - Attachment (Clase)
Representa los datos adjuntos a un mensaje de correo electrónico.
http://msdn2.microsoft.com/es-es/library/system.net.mail.attachment.aspx - Attachment (Constructor) (Stream, String, String)
Inicializa una nueva instancia de la clase Attachment con la cadena, el nombre y la información de tipo MIME que se hayan especificado.
http://msdn2.microsoft.com/es-es/library/5ds708xx.aspx - MemoryStream (Clase)
Crea una secuencia cuyo almacén de respaldo es la memoria.
http://msdn2.microsoft.com/es-es/library/system.io.memorystream.aspx - Attachment.CreateAttachmentFromString (Método) (String, ContentType)
Crea datos adjuntos a un mensaje utilizando el contenido de la cadena especificada y el objeto ContentType especificado.
http://msdn2.microsoft.com/es-es/library/ms144617.aspx