Compartir a través de


Enviar una respuesta

Hace referencia a: Outlook 2013 | Outlook 2016

Las aplicaciones cliente suelen admitir dos tipos de respuestas: una que se envía solo al remitente del mensaje original y otra que se envía a todos los demás destinatarios incluidos en la lista de destinatarios del mensaje original además del remitente. Este segundo tipo de respuesta se conoce normalmente como un mensaje de respuesta a todos.

Para enviar una respuesta de cualquier tipo, implemente algunas de las mismas tareas que haría al enviar un mensaje original. Por ejemplo, abre el almacén de mensajes predeterminado y la carpeta de mensajes salientes, normalmente la Bandeja de salida, y llama al método IMAPIFolder::CreateMessage de la carpeta saliente para crear la respuesta. Además, abre la carpeta que contiene el mensaje original, normalmente la Bandeja de entrada. Para obtener información sobre cómo abrir carpetas diferentes, vea Abrir una carpeta del almacén de mensajes.

La principal diferencia entre crear una respuesta y crear un mensaje original es que, con una respuesta, la mayoría de las propiedades se basan o copian directamente de las propiedades del mensaje original. Los datos adjuntos (propiedad PR_MESSAGE_ATTACHMENTS (PidTagMessageAttachments) de un mensaje se excluyen específicamente. La lista de destinatarios de un mensaje de respuesta se crea a partir de la lista del mensaje original con el destinatario representado por la propiedad PR_RECEIVED_BY_SEARCH_KEY (PidTagReceivedBySearchKey) y todos los destinatarios de copia de carbono ciegos quitados. La propiedad PR_RECEIVED_BY_SEARCH_KEY representa al usuario actual.

Para enviar una respuesta

  1. Abra el almacén de mensajes predeterminado. Para obtener más información, vea Abrir el almacén de mensajes predeterminado.

  2. Abra la carpeta Bandeja de salida. Para obtener más información, vea Abrir una carpeta del almacén de mensajes.

  3. Llame al método IMAPIFolder::CreateMessage de la Bandeja de salida para crear la respuesta.

  4. Llame al método IMAPIProp::CopyTo del mensaje original para copiar las siguientes propiedades en el mensaje de respuesta:

  5. No incluya las siguientes propiedades en la llamada a IMAPIProp::CopyTo:

    Propiedad ...
    PR_CLIENT_SUBMIT_TIME
    PR_MESSAGE_DELIVERY_TIME
    PR_MESSAGE_DOWNLOAD_TIME
    PR_MESSAGE_FLAGS
    PR_ORIGINATOR_DELIVERY_ REPORT\REQUESTED
    propiedades de PR_RCVD_REPRESENTING
    PR_READ_RECEIPT_ENTRYID
    PR_READ_RECEIPT_REQUESTED
    propiedades de PR_RECEIVED_BY
    propiedades de PR_REPLY_RECIPIENT
    PR_REPORT_ENTRYID
    propiedades de PR_SENDER
    propiedades de PR_SENT_REPRESENTING
    PR_SENTMAIL_ENTRYID
    PR_SUBJECT_PREFIX

  6. Agregue texto separador a cualquier propiedad del cuerpo del mensaje que admita: PR_BODY, PR_HTML o PR_RTF_COMPRESSED.

  7. Llame a ScCreateConversationIndex, pasando el valor de la propiedad PR_CONVERSATION_INDEX (PidTagConversationIndex) del mensaje original.

  8. Establezca un prefijo para la respuesta. Si usa el estándar "RE:", concatene estos caracteres al principio de PR_NORMALIZED_SUBJECT y establezca PR_SUBJECT (PidTagSubject) en esta nueva cadena. No establezca PR_SUBJECT_PREFIX (PidTagSubjectPrefix). Si usa un prefijo no estándar, como una cadena de más de tres caracteres, guárdelo en PR_SUBJECT_PREFIX.

  9. Establezca las propiedades de PR_SENT_REPRESENTING en los valores correspondientes en las propiedades de PR_RCVD_REPRESENTING .

  10. Establezca cada una de las entradas de PR_REPLY_RECIPIENT_ENTRIES (PidTagReplyRecipientEntries) y PR_REPLY_RECIPIENT_NAMES (PidTagReplyRecipientNames) en el identificador de entrada y el nombre para mostrar de un destinatario principal, un destinatario cuyo tipo se MAPI_TO. Mantenga estas propiedades sincronizadas. Es decir, PR_REPLY_RECIPIENT_ENTRIES y PR_REPLY_RECIPIENT_NAMES deben contener el mismo número de entradas, y una entrada en una posición determinada de una de las propiedades debe corresponder a una entrada en la misma posición de la otra propiedad.

  11. Si la respuesta se envía solo al remitente del mensaje original, cree una lista de destinatarios de entrada única con el destinatario representado por la propiedad PR_SENT_REPRESENTING del mensaje original. Para obtener más información sobre cómo crear una lista de destinatarios, consulte Creación de una lista de destinatarios.

  12. Si la respuesta es una respuesta completa, cree una lista de destinatarios como se indica a continuación:

    1. Llame al método IMessage::GetRecipientTable del mensaje original para acceder a su tabla de destinatarios.

    2. Llame a HrQueryAllRows para recuperar todas las filas de la tabla. Determine si cada fila representa un destinatario de copia principal o de carbono y debe permanecer en la lista o si representa un destinatario de copia de carbono ciego o el usuario y debe quitarse de la lista.

    3. Diferenciar entre tipos de destinatarios examinando la columna PR_RECIPIENT_TYPE (PidTagRecipientType). Esta columna se establecerá en MAPI_TO para los destinatarios principales, MAPI_CC para los destinatarios de copia de carbono y MAPI_BCC para los destinatarios de copia de carbono ciego.

    4. Compare la columna PR_SEARCH_KEY (PidTagSearchKey) con la propiedad PR_RECEIVED_BY_SEARCH_KEY del mensaje original para determinar si la fila representa al usuario.

    5. Quite filas no deseadas de la lista de destinatarios llamando a MAPIFreeBuffer para liberar la memoria asociada a las entradas correspondientes en la estructura SRowSet de la tabla de destinatarios. Establezca todos los valores de la matriz de valores de propiedad en cero, todos los miembros cValues en cero y todos los miembros lpProps de cada estructura SRow de SRowSet en NULL.

    6. Agregue el remitente a la lista de destinatarios, como se representa mediante las propiedades PR_SENT_REPRESENTING_NAME (PidTagSentRepresentingName) y PR_SENT_REPRESENTING_ENTRYID (PidTagSentRepresentingEntryId) del mensaje original. Compruebe que el remitente no está duplicado en la lista.

    7. Llame al método IMessage::ModifyRecipients del mensaje de respuesta y establezca el parámetro ulFlags en cero para crear una nueva lista de destinatarios para la respuesta o el mensaje reenviado en función de la lista del mensaje original.

  13. Llame al método IMAPIProp::SaveChanges de la respuesta para guardar el mensaje o IMessage::SubmitMessage para guardarlo y enviarlo.

Nota:

Antes de llamar a IMessage::ModifyRecipients para almacenar los cambios en la lista de destinatarios, puede permitir que los usuarios realicen modificaciones a través del formulario del mensaje. Los usuarios pueden agregar a la lista o quitar miembros concretos. Permitir que los usuarios realicen cambios en una lista de destinatarios es una característica de cliente opcional.