Recursos de Utilidade

Enviando uma Mensagem com Opção de Votação

O Microsoft Outlook permite que os usuários criem uma pesquisa ao compor uma nova mensagem. Isso é feito incluindo opções de votação, como Sim, Não, Talvez, etc. A classe FollowUpOptions oferecida pela Aspose.Email 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 um MapiMessage com opções de votação para criar uma pesquisa e, em seguida, enviar a mensagem usando o cliente do Exchange Web Service (EWS).

Criando e Enviando uma Mensagem com Opções de Votação

O seguinte trecho de código mostra como criar uma nova mensagem e enviá-la com opções de votação.

// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-C
System::String address = u"firstname.lastname@aspose.com";
System::SharedPtr<IEWSClient> client = GetExchangeEWSClient(GetExchangeTestUser());
System::SharedPtr<MailMessage> message = CreateTestMessage(address);
// Set FollowUpOptions Buttons
System::SharedPtr<FollowUpOptions> options = System::MakeObject<FollowUpOptions>();
options->set_VotingButtons(u"Yes;No;Maybe;Exactly!");
try
{
client->Send(message, options);
}
catch (System::Exception& ex)
{
System::Console::WriteLine(ex.get_Message());
}

O seguinte trecho de código mostra a definição do método CreateTestMessage usado no exemplo acima.

// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-C
System::SharedPtr<MailMessage> CreateTestMessage(System::String address)
{
System::SharedPtr<MailMessage> eml = System::MakeObject<MailMessage>(address, address, u"Flagged message", u"Make it nice and short, but descriptive. The description may appear in search engines' search results pages...");
return eml;
}

Ignorar ou Ignorar Certificado SSL Inválido ou Expirado

A Aspose.Email pode lidar com certificados SSL no Exchange Server usando a classe EWSClient. Se o certificado SSL expirou ou se tornou inválido, a Aspose.Email lança uma exceção devido ao certificado SSL inválido. Evite tais erros de certificado SSL ignorando-os usando o método mostrado no código abaixo. Registre o manipulador de retorno em seu método main() ou init() e adicione o método abaixo como membro da classe.

// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-C
static bool RemoteCertificateValidationHandler(System::SharedPtr<System::Object> sender, System::SharedPtr<System::Security::Cryptography::X509Certificates::X509Certificate> certificate, System::SharedPtr<System::Security::Cryptography::X509Certificates::X509Chain> chain, System::Net::Security::SslPolicyErrors sslPolicyErrors)
{
return true;
//Ignore the checks and go ahead
}
void IgnoringInvalidSSLCertificates()
{
// Register callback method for SSL validation event
System::Net::ServicePointManager::get_ServerCertificateValidationCallback().connect(RemoteCertificateValidationHandler);
}

Criando mensagens RE e FW a partir de arquivos MSG

IEWSClient permite que os desenvolvedores criem mensagens RE (Responder/Responder a Todos) e FW (Encaminhar) a partir de uma mensagem fonte. A mensagem fonte é identificada selecionando uma ExchangeMessageInfo específica de ExchangeMessageInfoCollection obtida através de ListMessages(). O outro argumento é o MailMessage real a ser enviado como mensagem RE ou FW. O seguinte trecho de código mostra como enviar uma mensagem e, em seguida, responder a essa mensagem e encaminhar essa mensagem. Para realizar esta tarefa:

  1. Inicialize o objeto IEWSClient fornecendo credenciais válidas.
  2. Envie algumas mensagens de amostra.
  3. Chame os métodos Reply(), ReplyAll() e Forward() para enviar mensagens.
// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-C
System::String dataDir = GetDataDir_Exchange();
const System::String mailboxUri = u"https://exchange.domain.com/ews/Exchange.asmx";
const System::String domain = u"";
const System::String username = u"username";
const System::String password = u"password";
System::SharedPtr<System::Net::NetworkCredential> credential = System::MakeObject<System::Net::NetworkCredential>(username, password, domain);
System::SharedPtr<IEWSClient> client = GetExchangeEWSClient(GetExchangeTestUser());
try
{
System::SharedPtr<MailMessage> message = System::MakeObject<MailMessage>(u"user@domain.com", u"user@domain.com", System::String(u"TestMailRefw - ") + System::ObjectExt::ToString(System::Guid::NewGuid()), u"TestMailRefw Implement ability to create RE and FW messages from source MSG file");
client->Send(message);
System::SharedPtr<ExchangeMessageInfoCollection> messageInfoCol = client->ListMessages(client->get_MailboxInfo()->get_InboxUri());
if (messageInfoCol->get_Count() == 1)
{
System::Console::WriteLine(u"1 message in Inbox");
}
else
{
System::Console::WriteLine(u"Error! No message in Inbox");
}
System::SharedPtr<MailMessage> message1 = System::MakeObject<MailMessage>(u"user@domain.com", u"user@domain.com", System::String(u"TestMailRefw - ") + System::ObjectExt::ToString(System::Guid::NewGuid()), u"TestMailRefw Implement ability to create RE and FW messages from source MSG file");
client->Send(message1);
messageInfoCol = client->ListMessages(client->get_MailboxInfo()->get_InboxUri());
if (messageInfoCol->get_Count() == 2)
{
System::Console::WriteLine(u"2 messages in Inbox");
}
else
{
System::Console::WriteLine(u"Error! No new message in Inbox");
}
System::SharedPtr<MailMessage> message2 = System::MakeObject<MailMessage>(u"user@domain.com", u"user@domain.com", System::String(u"TestMailRefw - ") + System::ObjectExt::ToString(System::Guid::NewGuid()), u"TestMailRefw Implement ability to create RE and FW messages from source MSG file");
message2->get_Attachments()->Add(Attachment::CreateAttachmentFromString(u"Test attachment 1", u"Attachment Name 1"));
message2->get_Attachments()->Add(Attachment::CreateAttachmentFromString(u"Test attachment 2", u"Attachment Name 2"));
// Reply, Replay All and forward Message
client->Reply(message2, messageInfoCol->idx_get(0));
client->ReplyAll(message2, messageInfoCol->idx_get(0));
client->Forward(message2, messageInfoCol->idx_get(0));
}
catch (System::Exception& ex)
{
System::Console::WriteLine(System::String(u"Error in program") + ex.get_Message());
}

Adicionando Cabeçalhos nas Solicitações EWS

A API do Aspose.Email permite adicionar cabeçalhos às solicitações do Exchange. Isso pode ser usado para adicionar cabeçalhos às solicitações EWS para diferentes cabeçalhos que podem ser usados para diferentes propósitos. Um exemplo poderia ser adicionar o cabeçalho X-AnchorMailbox, que é usado para gerenciar problemas de limitação no servidor Exchange. O método AddHeader da classe IEWSClient é usado para adicionar cabeçalhos às solicitações EWS, conforme mostrado no seguinte trecho de código.

// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-C
System::SharedPtr<IEWSClient> client = GetExchangeEWSClient(GetExchangeTestUser());
client->AddHeader(u"X-AnchorMailbox", u"username@domain.com");
System::SharedPtr<ExchangeMessageInfoCollection> messageInfoCol = client->ListMessages(client->get_MailboxInfo()->get_InboxUri());

Trabalhando com Mensagens Unificadas

A Aspose.Email pode recuperar informações de mensagens unificadas a partir do Exchange Server 2010. Mensagens unificadas, como obter informações de configuração, iniciar uma chamada de saída, recuperar informações de chamadas telefônicas por ID de chamada e desconectar uma chamada telefônica por ID são suportadas atualmente. O seguinte exemplo de código mostra como recuperar informações de configuração de mensagens unificadas do Microsoft Exchange Server 2010.

// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-C
System::SharedPtr<IEWSClient> client = GetExchangeEWSClient(GetExchangeTestUser());
System::SharedPtr<UnifiedMessagingConfiguration> umConf = client->GetUMConfiguration();

Obtendo Dicas de E-mail

O Microsoft Exchange Server adicionou vários novos recursos com o Exchange Server 2010 e 2013. Um deles permite que os usuários obtenham dicas de e-mail ao compor uma mensagem de e-mail. Essas dicas são muito úteis, pois fornecem informações antes que o e-mail seja enviado. Por exemplo, se um endereço de e-mail estiver incorreto na lista de destinatários, uma dica é exibida para informá-lo de que o endereço de e-mail é inválido. As dicas de e-mail também permitem que você veja respostas automáticas fora do escritório antes de enviar um e-mail: o Exchange Server (2010 e 2013) envia a dica de e-mail quando o e-mail está sendo composto, se um ou mais dos destinatários definiram respostas automáticas fora do escritório. O Microsoft Exchange Server 2010 Service Pack 1 é necessário para todos os recursos demonstrados neste artigo. O seguinte trecho de código mostra como usar a classe EWSClient, que utiliza os Serviços Web do Exchange, disponíveis no Microsoft Exchange Server 2007 e versões posteriores.

// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-C
// Create instance of EWSClient class by giving credentials
System::SharedPtr<IEWSClient> client = GetExchangeEWSClient(GetExchangeTestUser());
System::Console::WriteLine(u"Connected to Exchange server...");
// Provide mail tips options
System::SharedPtr<MailAddressCollection> addrColl = System::MakeObject<MailAddressCollection>();
addrColl->Add(System::MakeObject<MailAddress>(u"test.exchange@ex2010.local", true));
addrColl->Add(System::MakeObject<MailAddress>(u"invalid.recipient@ex2010.local", true));
System::SharedPtr<GetMailTipsOptions> options = System::MakeObject<GetMailTipsOptions>(MailAddress::to_MailAddress(u"administrator@ex2010.local"), addrColl, Aspose::Email::Clients::Exchange::WebService::MailTipsType::All);
try
{
// Get Mail Tips
System::ArrayPtr<System::SharedPtr<MailTips>> tips = client->GetMailTips(options);
// Display information about each Mail Tip
for (System::SharedPtr<MailTips> tip : tips)
{
// Display Out of office message, if present
if (tip->get_OutOfOffice() != nullptr)
{
System::Console::WriteLine(System::String(u"Out of office: ") + tip->get_OutOfOffice()->get_ReplyBody()->get_Message());
}
// Display the invalid email address in recipient, if present
if (tip->get_InvalidRecipient() == true)
{
System::Console::WriteLine(System::String(u"The recipient address is invalid: ") + tip->get_RecipientAddress());
}
}
}
catch (System::Exception& ex)
{
System::Console::WriteLine(ex.get_Message());
}