Trabalhando com Opção de Votação Usando MapiMessage

Criando Opção de Votação Usando MapiMessage

O Microsoft Outlook permite que os usuários criem uma enquete ao compor uma nova mensagem. Isso permite incluir opções de votação, como Sim, Não, Talvez, etc. Aspose.Email permite o mesmo ao criar uma nova mensagem do Outlook. A classe FollowUpOptions fornece a propriedade VotingButtons que pode ser usada para definir ou obter o valor das opções de votação. Este artigo fornece um exemplo detalhado de como criar uma MapiMessage com opções de votação para criar uma enquete.

Criando uma Enquete usando MapiMessage

O seguinte trecho de código mostra como criar uma enquete; a classe FollowUpManager pode ser usada como mostrado no seguinte trecho de código.

// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-.NET
string address = "firstname.lastname@aspose.com";
IEWSClient client = EWSClient.GetEWSClient("https://outlook.office365.com/ews/exchange.asmx", "testUser", "pwd", "domain");
MailMessage message = CreateTestMessage(address);
// Set FollowUpOptions Buttons
FollowUpOptions options = new FollowUpOptions();
options.VotingButtons = "Yes;No;Maybe;Exactly!";
client.Send(message, options);

Lendo Opções de Votação de uma MapiMessage

O seguinte trecho de código mostra como ler opções de votação de uma MapiMessage.

// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-.NET
MapiMessage message = MapiMessage.FromFile(fileName);
// This method can be useful when except voting buttons it is necessary to get other parameters (ex. a category)
FollowUpOptions options = FollowUpManager.GetOptions(message);
// Voting buttons will be introduced as a string with semi-column as a separator
string votingButtons = options.VotingButtons;

Lendo Apenas Botões de Votação

O seguinte trecho de código mostra como ler apenas botões de votação.

// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-.NET
MapiMessage testMsg = MapiMessage.FromStream(ms);
// This method can be useful when it is necessary to read only voting buttons Voting buttons will be introduced as a collection of string values
IList buttons = FollowUpManager.GetVotingButtons(testMsg);

Adicionando um botão de votação a uma Mensagem Existente

O seguinte trecho de código mostra como adicionar um botão de votação a uma mensagem existente.

// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-.NET
// The path to the File directory.
string dataDir = RunExamples.GetDataDir_Outlook();
MapiMessage mapi = MapiMessage.FromFile(dataDir + "message.msg");
FollowUpManager.AddVotingButton(mapi, "Indeed!");
mapi.Save(dataDir + "AddVotingButtonToExistingMessage_out.msg");

Deletando um botão de Votação de uma Mensagem

O seguinte trecho de código mostra como deletar o botão de votação de uma Mensagem.

// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-.NET
// The path to the File directory.
string dataDir = RunExamples.GetDataDir_Outlook();
// Create New Message and set FollowUpOptions, FollowUpManager properties
MapiMessage msg = CreateTestMessage(false);
FollowUpOptions options = new FollowUpOptions();
options.VotingButtons = "Yes;No;Maybe;Exactly!";
FollowUpManager.SetOptions(msg, options);
msg.Save(dataDir + "MapiMsgWithPoll.msg");
FollowUpManager.RemoveVotingButton(msg, "Exactly!"); // Deleting a single button OR
FollowUpManager.ClearVotingButtons(msg); // Deleting all buttons from a MapiMessage
msg.Save(dataDir + "MapiMsgWithPoll.msg");

Ler as Informações dos Resultados da Votação

O seguinte trecho de código mostra como ler as informações dos resultados da votação.

// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-.NET
MapiMessage msg = MapiMessage.FromFile(dataDir + @"AddVotingButtonToExistingMessage.msg");
foreach (MapiRecipient recipient in msg.Recipients)
{
Console.WriteLine(string.Format("Recipient: {0}", recipient.DisplayName));
// Get the PR_RECIPIENT_AUTORESPONSE_PROP_RESPONSE property
Console.WriteLine(string.Format("Response: {0}", recipient.Properties[MapiPropertyTag.PR_RECIPIENT_AUTORESPONSE_PROP_RESPONSE].GetString()));
// Get the PR_RECIPIENT_TRACKSTATUS_TIME property
Console.WriteLine(string.Format("Response time: {0}", recipient.Properties[MapiPropertyTag.PR_RECIPIENT_TRACKSTATUS_TIME].GetDateTime()));
Console.WriteLine();
}

Métodos de Exemplo Usados nos Exemplos

O seguinte trecho de código mostra como criar a mensagem de exemplo usada nos exemplos.

// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-.NET
private static MapiMessage CreateTestMessage(bool draft)
{
MapiMessage 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...");
if (!draft)
{
msg.SetMessageFlags(msg.Flags ^ MapiMessageFlags.MSGFLAG_UNSENT);
}
return msg;
}