Trabalhando com Opções de Votação e Reações em MSG
Criar Opções de Votação com MapiMessage
O Microsoft Outlook fornece um recurso para criar uma pesquisa ao redigir um novo email, permitindo que os usuários incluam opções de votação como Sim, Não, Talvez, etc. O Aspose.Email oferece funcionalidade semelhante ao criar programaticamente uma nova mensagem do Outlook. O FollowUpOptions classe fornece o VotingButtons propriedade que pode ser usada para definir ou obter as opções de votação. MapiMessage refere-se a uma classe dentro do namespace Aspose.Email que representa uma mensagem de email no formato Messaging Application Programming Interface (MAPI) comumente usado pelo Microsoft Outlook. Ao usar a classe MapiMessage, os desenvolvedores podem adicionar botões de votação a um email. Este artigo fornece um exemplo detalhado de como criar um MapiMessage com opções de votação para criar uma pesquisa.
Criar Pesquisas
O trecho de código a seguir demonstra como criar uma pesquisa em uma mensagem do Outlook usando o Aspose.Email. O FollowUpManager classe facilita a definição das opções de votação.
// Create a MapiMessage with the sender, recipient, subject, and body
var msg = new MapiMessage(
"from@test.com",
"to@test.com",
"Flagged message",
"Make it nice and short, but descriptive. The description may appear in search engines' search results pages..."
);
// Create FollowUpOptions and set the voting buttons
var options = new FollowUpOptions
{
VotingButtons = "Yes;No;Maybe;Exactly!"
};
// Apply the follow-up options to the message
FollowUpManager.SetOptions(msg, options);
- FollowUpOptions: Fornece propriedades para configurar ações de acompanhamento, como botões de votação.
- VotingButtons: Uma propriedade de string onde diferentes opções de votação são separadas por ponto e vírgula.
- FollowUpManager.SetOptions: Aplica as opções de acompanhamento especificadas à mensagem.
Ler Opções de Votação
Para recuperar opções de votação de um MapiMessage, você pode usar o GetOptions método. Este método não apenas recupera os botões de votação, mas também pode fornecer parâmetros adicionais como categorias, se necessário.
// Retrieve follow-up options from the message
var options = FollowUpManager.GetOptions(msg);
// Voting buttons are returned as a string with a semicolon separator
string votingButtons = options.VotingButtons;
// Display the voting buttons
Console.WriteLine($"Voting Options: {votingButtons}");
- GetOptions: Recupera o FollowUpOptions objeto da mensagem, que inclui os botões de votação e potencialmente outras propriedades.
- VotingButtons: As opções são extraídas como uma string separada por ponto e vírgula, permitindo fácil exibição ou manipulação.
Ler Botões de Votação
Se precisar acessar apenas os botões de votação como uma lista de strings individuais, pode usar o GetVotingButtons método, que os retorna como uma coleção.
// Read only voting buttons as a collection of string values
var votingButtons = FollowUpManager.GetVotingButtons(msg);
// Display each voting button
foreach (var button in votingButtons)
{
Console.WriteLine($"Voting Button: {button}");
}
- GetVotingButtons: Retorna uma coleção de strings de botões de votação, facilitando a iteração sobre eles e a realização de operações como exibição ou modificação.
Adicionar Botões de Votação
Você pode adicionar botões de votação adicionais a uma mensagem existente usando o AddVotingButton método. Isso pode ser útil para atualizar dinamicamente as opções de votação.
// Add a new voting button to the existing message
FollowUpManager.AddVotingButton(msg, "Indeed!");
- AddVotingButton: Adiciona uma nova opção de votação aos botões de votação existentes da mensagem, permitindo a personalização dinâmica de enquetes.
Excluir Botões de Votação
Você pode querer remover botões de votação específicos ou limpar todos os botões de uma mensagem. O código a seguir demonstra ambas as ações usando RemoveVotingButton e ClearVotingButtons métodos.
// Delete a specific voting button
FollowUpManager.RemoveVotingButton(msg, "Exactly!");
// Or delete all voting buttons from the MapiMessage
FollowUpManager.ClearVotingButtons(msg);
- RemoveVotingButton: Exclui um botão de votação específico pelo nome.
- ClearVotingButtons: Remove todos os botões de votação, redefinindo efetivamente as opções de votação.
Ler Resultados de Votação
Aspose.Email também permite ler os resultados de votação dos destinatários de uma mensagem. Você pode acessar propriedades como a resposta e o horário de resposta do destinatário.
// Load a MapiMessage from a file
var msg = MapiMessage.Load("sample.msg");
// Iterate through each recipient and display their vote information
foreach (var recipient in msg.Recipients)
{
Console.WriteLine($"Recipient: {recipient.DisplayName}");
// Get the recipient's response using the appropriate MapiPropertyTag
var response = recipient.Properties[MapiPropertyTag.PR_RECIPIENT_AUTORESPONSE_PROP_RESPONSE].GetString();
Console.WriteLine($"Response: {response}");
// Get the response time
var responseTime = recipient.Properties[MapiPropertyTag.PR_RECIPIENT_TRACKSTATUS_TIME].GetDateTime();
Console.WriteLine($"Response time: {responseTime}\n");
}
- MapiRecipient: Representa um destinatário na MapiMessage, permitindo o acesso a dados individuais de resposta.
- *PR_RECIPIENT_AUTORESPONSE_PROP_RESPONSE: Uma tag de propriedade que armazena a resposta de voto do destinatário.
- PR_RECIPIENT_TRACKSTATUS_TIME: Uma tag de propriedade que registra o horário em que o destinatário respondeu.
Recuperar Informações de Reação de MSG
O GetReactions método do FollowUpManager a classe permite recuperar uma lista de reações em uma mensagem MAPI, facilitando a análise do engajamento dos usuários. O exemplo de código a seguir demonstra como recuperar as reações disponíveis para uma mensagem especificada, proporcionando insights sobre as interações dos usuários:
// Load the message file
var msg = MapiMessage.Load(fileName);
// Retrieve the list of reactions on the message
var reactions = FollowUpManager.GetReactions(msg);
// Iterate through each reaction and output the details to the console
foreach (var reaction in reactions)
{
Console.WriteLine($"User: {reaction.Name}, Email: {reaction.Email}, Reaction: {reaction.Type}, Date: {reaction.ReactionDateTime}");
}