public static bool TryTestSmtp(MailServerSettings settings, out string lastError) { try { lastError = String.Empty; return Test(MailClientBuilder.Smtp(), settings); } catch (Exception ex) { lastError = ex.Message; return false; } }
public static bool TryTestSmtp(MailServerSettings settings, out string last_error) { try { last_error = String.Empty; return(Test(MailClientBuilder.Smtp(), settings)); } catch (Exception ex) { last_error = ex.Message; return(false); } }
public static bool TryTestPop(MailServerSettings settings, out string lastError) { try { lastError = String.Empty; return Test(MailClientBuilder.Pop(), settings); } catch (Exception ex) { lastError = ex.Message; return false; } }
public static bool Test(BaseProtocolClient ingoingMailClient, MailServerSettings settings) { try { var sResult = ingoingMailClient.Authorize(settings, settings.MailServerOperationTimeoutInMilliseconds); if (sResult.ToLower().IndexOf("success", StringComparison.Ordinal) == -1 && sResult.ToLower().IndexOf("+", StringComparison.Ordinal) == -1 && sResult.ToLower().IndexOf("ok", StringComparison.Ordinal) == -1) { if (ingoingMailClient is Imap4Client) throw new ImapConnectionException(sResult); if(ingoingMailClient is Pop3Client) throw new Pop3ConnectionException(sResult); else throw new SmtpConnectionException(sResult); } return true; } catch (TargetInvocationException exTarget) { if (ingoingMailClient is Imap4Client) throw new ImapConnectionException(exTarget.InnerException.Message); if(ingoingMailClient is Pop3Client) throw new Pop3ConnectionException(exTarget.InnerException.Message); else throw new SmtpConnectionException(exTarget.InnerException.Message); } catch (TimeoutException) { if (ingoingMailClient is Imap4Client) throw new ImapConnectionTimeoutException(); if (ingoingMailClient is Pop3Client) throw new Pop3ConnectionTimeoutException(); else throw new SmtpConnectionTimeoutException(); } finally { if (ingoingMailClient.IsConnected) { try { ingoingMailClient.Disconnect(); } catch {} } } }
static public bool TestSmtp(MailServerSettings settings) { var smtp = MailClientBuilder.Smtp(); string s_result = String.Empty; try { IAsyncResult async_res; if (settings.EncryptionType == EncryptionType.None || settings.EncryptionType == EncryptionType.StartTLS) { async_res = smtp.BeginConnect(settings.Url, settings.Port, null); if (!async_res.AsyncWaitHandle.WaitOne(WAIT_TIMEOUT)) throw new SmtpConnectionTimeoutException(); if (settings.AuthenticationType != SaslMechanism.None || settings.EncryptionType == EncryptionType.StartTLS) smtp.SendEhloHelo(); if (settings.EncryptionType == EncryptionType.StartTLS) smtp.StartTLS(settings.Url); if (settings.AuthenticationType != SaslMechanism.None) { s_result = smtp.Authenticate(settings.AccountName, settings.AccountPass, settings.AuthenticationType); } } else { async_res = smtp.BeginConnectSsl(settings.Url, settings.Port, null); if (!async_res.AsyncWaitHandle.WaitOne(WAIT_TIMEOUT)) throw new SmtpConnectionTimeoutException(); if (settings.AuthenticationType != SaslMechanism.None) { s_result = smtp.Authenticate(settings.AccountName, settings.AccountPass, settings.AuthenticationType); } } if (settings.AuthenticationType != SaslMechanism.None && !s_result.StartsWith("+")) throw new SmtpConnectionException(s_result); return true; } finally { if (smtp.IsConnected) smtp.Disconnect(); } }
static public bool TestSmtp(MailServerSettings settings) { var smtp = MailClientBuilder.Smtp(); string s_result = String.Empty; try { IAsyncResult async_res; if (settings.EncryptionType == EncryptionType.None || settings.EncryptionType == EncryptionType.StartTLS) { async_res = smtp.BeginConnect(settings.Url, settings.Port, null); if (!async_res.AsyncWaitHandle.WaitOne(WAIT_TIMEOUT)) { throw new SmtpConnectionTimeoutException(); } if (settings.AuthenticationType != SaslMechanism.None || settings.EncryptionType == EncryptionType.StartTLS) { smtp.SendEhloHelo(); } if (settings.EncryptionType == EncryptionType.StartTLS) { smtp.StartTLS(settings.Url); } if (settings.AuthenticationType != SaslMechanism.None) { s_result = smtp.Authenticate(settings.AccountName, settings.AccountPass, settings.AuthenticationType); } } else { async_res = smtp.BeginConnectSsl(settings.Url, settings.Port, null); if (!async_res.AsyncWaitHandle.WaitOne(WAIT_TIMEOUT)) { throw new SmtpConnectionTimeoutException(); } if (settings.AuthenticationType != SaslMechanism.None) { s_result = smtp.Authenticate(settings.AccountName, settings.AccountPass, settings.AuthenticationType); } } if (settings.AuthenticationType != SaslMechanism.None && !s_result.StartsWith("+")) { throw new SmtpConnectionException(s_result); } return(true); } finally { if (smtp.IsConnected) { smtp.Disconnect(); } } }
static public bool Test(BaseProtocolClient ingoing_mail_client, MailServerSettings settings) { try { IAsyncResult async_res; switch (settings.EncryptionType) { case EncryptionType.StartTLS: async_res = ingoing_mail_client.BeginConnect(settings.Url, settings.Port, null); break; case EncryptionType.SSL: async_res = ingoing_mail_client.BeginConnectSsl(settings.Url, settings.Port, null); break; default: async_res = ingoing_mail_client.BeginConnect(settings.Url, settings.Port, null); break; } if (!async_res.AsyncWaitHandle.WaitOne(WAIT_TIMEOUT)) { throw new ImapConnectionTimeoutException(); } if (settings.EncryptionType == EncryptionType.StartTLS) { ingoing_mail_client.StartTLS(settings.Url); } if (settings.AuthenticationType == SaslMechanism.Login) { ingoing_mail_client.Login(settings.AccountName, settings.AccountPass, ""); } else { async_res = ingoing_mail_client.BeginAuthenticate(settings.AccountName, settings.AccountPass, settings.AuthenticationType, null); } if (!async_res.AsyncWaitHandle.WaitOne(WAIT_TIMEOUT)) { throw new ImapConnectionTimeoutException(); } if (async_res.AsyncState == null) { throw new AuthenticationException("Auth failed. Check your settings."); } string s_result = ingoing_mail_client.EndConnectSsl(async_res).ToLowerInvariant(); if (s_result.IndexOf("success", StringComparison.Ordinal) == -1 && s_result.IndexOf("+", StringComparison.Ordinal) == -1 && s_result.IndexOf("ok", StringComparison.Ordinal) == -1) { throw new ImapConnectionException(s_result); } return(true); } finally { if (ingoing_mail_client.IsConnected) { ingoing_mail_client.Disconnect(); } } }
static public bool TryTestSmtp(MailServerSettings settings, out string last_error) { try { last_error = String.Empty; return TestSmtp(settings); } catch (Exception ex) { last_error = ex.Message; return false; } }
static public bool Test(BaseProtocolClient ingoing_mail_client, MailServerSettings settings) { try { IAsyncResult async_res; switch (settings.EncryptionType) { case EncryptionType.StartTLS: async_res = ingoing_mail_client.BeginConnect(settings.Url, settings.Port, null); break; case EncryptionType.SSL: async_res = ingoing_mail_client.BeginConnectSsl(settings.Url, settings.Port, null); break; default: async_res = ingoing_mail_client.BeginConnect(settings.Url, settings.Port, null); break; } if (!async_res.AsyncWaitHandle.WaitOne(WAIT_TIMEOUT)) throw new ImapConnectionTimeoutException(); if (settings.EncryptionType == EncryptionType.StartTLS) { ingoing_mail_client.StartTLS(settings.Url); } if (settings.AuthenticationType == SaslMechanism.Login) { ingoing_mail_client.Login(settings.AccountName, settings.AccountPass, ""); } else { async_res = ingoing_mail_client.BeginAuthenticate(settings.AccountName, settings.AccountPass, settings.AuthenticationType, null); } if (!async_res.AsyncWaitHandle.WaitOne(WAIT_TIMEOUT)) throw new ImapConnectionTimeoutException(); if (async_res.AsyncState == null) throw new AuthenticationException("Auth failed. Check your settings."); string s_result = ingoing_mail_client.EndConnectSsl(async_res).ToLowerInvariant(); if (s_result.IndexOf("success", StringComparison.Ordinal) == -1 && s_result.IndexOf("+", StringComparison.Ordinal) == -1 && s_result.IndexOf("ok", StringComparison.Ordinal) == -1) throw new ImapConnectionException(s_result); return true; } finally { if (ingoing_mail_client.IsConnected) { ingoing_mail_client.Disconnect(); } } }