public void Login(string sHost, ushort nPort, string sUserId, string sPassword, bool sslEnabled=false )
{
ImapResponseEnum eImapResponse = ImapResponseEnum.IMAP_SUCCESS_RESPONSE;
ImapException e_login = new ImapException (ImapException.ImapErrorEnum.IMAP_ERR_LOGIN, m_sUserId);
ImapException e_invalidparam = new ImapException(ImapException.ImapErrorEnum.IMAP_ERR_INVALIDPARAM);
if (sHost.Length == 0)
{
Log (LogTypeEnum.ERROR, "Invalid m_sHost name");
throw e_invalidparam;
}
if (sUserId.Length == 0)
{
Log (LogTypeEnum.ERROR, "Invalid m_sUserId");
throw e_invalidparam;
}
if (sPassword.Length == 0)
{
Log (LogTypeEnum.ERROR, "Invalid Password");
throw e_invalidparam;
}
if (m_bIsConnected)
{
if (m_bIsLoggedIn)
{
if (m_sHost == sHost && m_nPort == nPort)
{
if (m_sUserId == sUserId &&
m_sPassword == sPassword )
{
Log (LogTypeEnum.INFO, "Connected and Logged in already");
return;
}
else
LogOut();
}
else Disconnect();
}
}
m_bIsConnected = false;
m_bIsLoggedIn = false;
try
{
eImapResponse = Connect(sHost, nPort, sslEnabled);
if (eImapResponse == ImapResponseEnum.IMAP_SUCCESS_RESPONSE)
{
m_bIsConnected = true;
}
else return;
}
catch (Exception e)
{
throw e;
}
ArrayList asResultArray = new ArrayList();
string sCommand = IMAP_LOGIN_COMMAND;
sCommand += " " + sUserId + " " + sPassword;
sCommand += IMAP_COMMAND_EOL;
try
{
eImapResponse = SendAndReceive(sCommand, ref asResultArray);
if (eImapResponse == ImapResponseEnum.IMAP_SUCCESS_RESPONSE)
{
m_bIsLoggedIn = true;
m_sUserId = sUserId;
m_sPassword = sPassword;
}
else throw e_login;
}
catch (Exception e)
{
throw e;
}
}