public:
static void RetryIfBusy(String* server)
{
MailAddress* from = new MailAddress(S"ben@contoso.com");
MailAddress* to = new MailAddress(S"jane@contoso.com");
MailMessage* message = new MailMessage(from, to);
// message.Subject = "Using the SmtpClient class.";
message->Subject = S"Using the SmtpClient class.";
message->Body = S"Using this feature, you can send an e-mail message from an application very easily.";
// Add a carbon copy recipient.
MailAddress* copy= new MailAddress(S"Notifications@contoso.com");
message->CC->Add(copy);
SmtpClient* client = new SmtpClient(server);
// Include credentials if the server requires them.
client->Credentials = dynamic_cast<ICredentialsByHost*> (CredentialCache::DefaultNetworkCredentials);
Console::WriteLine(S"Sending an e-mail message to {0} using the SMTP host {1}.",
to->Address, client->Host);
try
{
client->Send(message);
}
catch (SmtpFailedRecipientsException* ex)
{
for (int i = 0; i<ex->Exceptions->Length; i++)
{
SmtpStatusCode status = ex->Exceptions[i]->StatusCode;
if (status == SmtpStatusCode::MailboxBusy ||
status == SmtpStatusCode::MailboxUnavailable)
{
Console::WriteLine(S"Delivery failed - retrying in 5 seconds.");
System::Threading::Thread::Sleep(5000);
client->Send(message);
}
else
{
Console::WriteLine(S"Failed to deliver message to {0}", ex->FailedRecipients[i]);
}
}
}
__finally
{
client->Dispose();
}
}