Crear un archivo adjunto de mensaje
Hace referencia a: Outlook 2013 | Outlook 2016
Los datos adjuntos de un mensaje son algunos datos adicionales, como un archivo, otro mensaje o un objeto OLE, que puede enviar o guardar junto con un mensaje. Cada dato adjunto tiene una colección de propiedades que lo identifica y describe su tipo y cómo se representa. Al igual que los destinatarios, solo se puede acceder a los datos adjuntos del mensaje a través del mensaje al que pertenecen. Por lo tanto, para que se puedan usar los datos adjuntos, su mensaje debe estar abierto.
Creación de datos adjuntos de mensajes
Llame al método IMessage::CreateAttach del mensaje y pase NULL como identificador de interfaz. CreateAttach devuelve un número que identifica de forma única los nuevos datos adjuntos dentro del mensaje. El número de datos adjuntos se almacena en la propiedad PR_ATTACH_NUM (PidTagAttachNumber) y solo es válido siempre y cuando el mensaje que contiene los datos adjuntos esté abierto.
Llame a IMAPIProp::SetProps para establecer PR_ATTACH_METHOD (PidTagAttachMethod) para indicar cómo obtener acceso a los datos adjuntos. PR_ATTACH_METHOD es necesario. Establézcalo en:
ATTACH_BY_VALUE si los datos adjuntos son datos binarios.
ATTACH_BY_REFERENCE, ATTACH_BY_REF_RESOLVE o ATTACH_BY_REF_ONLY si los datos adjuntos son un archivo.
ATTACH_EMBEDDED_MSG si los datos adjuntos son un mensaje.
ATTACH_OLE si los datos adjuntos son un objeto OLE.
Establezca la propiedad de datos adjuntos adecuada:
PR_ATTACH_DATA_BIN (PidTagAttachDataBinary) para datos binarios y objetos OLE 1.
PR_ATTACH_PATHNAME (PidTagAttachPathname) para los archivos.
PR_ATTACH_DATA_OBJ (PidTagAttachDataObject) para mensajes y objetos OLE 2.
Establezca PR_ATTACH_RENDERING (PidTagAttachRendering) para que contenga la representación gráfica de los datos adjuntos de los archivos adjuntos o binarios. No lo establezca para los objetos OLE, que almacenan la información de representación internamente, ni para los mensajes adjuntos.
Establezca PR_RENDERING_POSITION (PidTagRenderingPosition) para indicar dónde se deben mostrar los datos adjuntos. PR_RENDERING_POSITION solo se aplica a los clientes que establecen la propiedad PR_BODY. Si solo admite PR_RTF_COMPRESSED, coloque la siguiente información de marcador de posición en la secuencia comprimida:
\objattph
Para establecer PR_RENDERING_POSITION, asigne un número que represente un desplazamiento ordinal en caracteres, con el primer carácter de PR_BODY en 0, si necesita saber dónde se representan los datos adjuntos en el mensaje, o 0xFFFFFFFF, si no representa datos adjuntos dentro de PR_BODY.
Establezca PR_ATTACH_FILENAME (PidTagAttachFilename) para indicar el nombre corto del archivo de un archivo adjunto y PR_ATTACH_LONG_FILENAME (PidTagAttachLongFilename) para indicar el nombre del archivo como compatible en una plataforma que controla el formato de nombre de archivo largo. Ambas propiedades son opcionales. Sin embargo, si establece PR_ATTACH_LONG_FILENAME, establezca también PR_ATTACH_FILENAME.
Establezca PR_DISPLAY_NAME (PidTagDisplayName) para indicar el nombre de los datos adjuntos que pueden aparecer en un cuadro de diálogo. PR_DISPLAY_NAME es opcional.
Establecer PR_ATTACH_DATA_BIN
Llame a IMAPIProp::OpenProperty para abrir la propiedad con la interfaz IStream .
Si un archivo contiene los datos y está abierto o si necesita un control explícito sobre el tamaño del búfer, llame a IStream::Write en un bucle para colocar los datos en la secuencia.
Otra opción consiste en llamar a OpenStreamOnFile para crear una secuencia para acceder al archivo de datos y, a continuación, llamar al método IStream::CopyTo de esta secuencia para copiar los datos en la secuencia devuelta por OpenProperty.
Llame al método IStream::Commit de la nueva secuencia.
Establecer PR_ATTACH_DATA_OBJ
Llame a IMAPIProp::OpenProperty para abrir la propiedad con la interfaz IStreamDocfile para crear un flujo que funcione con el almacenamiento estructurado. Los proveedores de almacén de mensajes implementan IStreamDocfile para proporcionar a los clientes una forma de mayor rendimiento de almacenar y recuperar el almacenamiento estructurado. La interfaz IStreamDocfile es la misma que IStream, pero se garantiza que el contenido de la secuencia tiene el formato de almacenamiento estructurado. Si esta llamada se realiza correctamente, cree la secuencia con los mismos pasos descritos para establecer PR_ATTACH_DATA_BIN.
Si se produce un error en OpenProperty :
Vuelva a llamar a OpenProperty para pedir IStorage.
Llame a StgOpenStorage para abrir el objeto OLE y devolver un objeto de almacenamiento.
Llame al método IStorage::CopyTo del objeto de almacenamiento devuelto para copiarlo en el objeto de almacenamiento devuelto desde OpenProperty.
Llame al método IStorage::Commit del nuevo objeto de almacenamiento.
Establecer PR_ATTACH_PATHNAME
Asigne una estructura SPropValue , estableciendo el miembro ulPropTag en PR_ATTACH_PATHNAME y el miembro Value.LPSZ en la cadena de caracteres que representa el nombre de archivo.
Llame al método IMAPIProp::SetProps de los datos adjuntos .
Nota:
Si la plataforma admite nombres de archivo largos, establezca PR_ATTACH_PATHNAME y PR_ATTACH_LONG_PATHNAME. Es posible que sea necesario realizar una llamada al sistema operativo para recuperar el nombre de archivo corto.