public void UserLoginByEmail(string email, string login, string password, WMStartPage startPage, string toEmail) { Account acct = Account.LoginAccount(email, login, password); if (acct != null) { string sessionHash = Utils.GetMD5DigestHexString(HttpContext.Current.Session.SessionID); DbStorage storage = DbStorageCreator.CreateDatabaseStorage(acct); try { storage.Connect(); storage.CreateTempRow(acct.ID, string.Format(@"sessionHash_{0}", sessionHash)); } catch (WebMailException) { throw; } catch (Exception ex) { throw new WebMailDatabaseException(ex); } finally { storage.Disconnect(); } HttpContext.Current.Response.Redirect(_wmRoot + @"/" + string.Format(@"integration/integr.aspx?hash={0}&scr={1}&to={2}", sessionHash, (int)startPage, toEmail), false); } }
protected void Page_Load(object sender, EventArgs e) { Account acct = Session[Constants.sessionAccount] as Account; if (acct != null) { int fileType = (string.Compare(Request.Form["file_type"], "0", true, CultureInfo.InvariantCulture) == 0) ? 0 : 1; HttpFileCollection files = Request.Files; if ((files != null) && (files.Count > 0)) { HttpPostedFile file = files[0]; if (file != null) { byte[] buffer = null; using (Stream uploadStream = file.InputStream) { buffer = new byte[uploadStream.Length]; long numBytesToRead = uploadStream.Length; long numBytesRead = 0; while (numBytesToRead > 0) { int n = uploadStream.Read(buffer, (int)numBytesRead, (int)numBytesToRead); if (n == 0) { break; } numBytesRead += n; numBytesToRead -= n; } } if (buffer != null) { try { string csvText = Encoding.Default.GetString(buffer); CsvParser parser = new CsvParser(csvText, true); DataTable dt = parser.Parse(); if (dt.Rows.Count == 0) { WebmailResourceManager resMan = (new WebmailResourceManagerCreator()).CreateResourceManager(); Log.WriteLine("import Page_Load", "Error: No contacts for import"); _jsErrorCode = 2; _jsContactsImported = 0; Session[Constants.sessionReportText] = string.Format(@"{0}", resMan.GetString("ErrorNoContacts")); return; } ArrayList contacts = new ArrayList(); for (int rowsIndex = 0; rowsIndex < dt.Rows.Count; rowsIndex++) { bool contactInitialized = false; AddressBookContact contact = new AddressBookContact(); contact.IDUser = acct.UserOfAccount.ID; string firstName = string.Empty; string lastName = string.Empty; string nickname = string.Empty; string displayName = string.Empty; string birthday = string.Empty; DataRow dr = dt.Rows[rowsIndex]; for (int columnsIndex = 0; columnsIndex < dt.Columns.Count; columnsIndex++) { if (dr[columnsIndex] != DBNull.Value) { if (dr[columnsIndex] as string != null) { switch (dt.Columns[columnsIndex].ColumnName.ToLower()) { case "first name": case "firstname": firstName = dr[columnsIndex] as string; contactInitialized = true; break; case "last name": case "lastname": lastName = dr[columnsIndex] as string; contactInitialized = true; break; case "notes": contact.Notes = dr[columnsIndex] as string; contactInitialized = true; break; case "home street": case "homestreet": case "homeaddress": contact.HStreet = dr[columnsIndex] as string; contactInitialized = true; break; case "home city": case "homecity": contact.HCity = dr[columnsIndex] as string; contactInitialized = true; break; case "home postal code": case "zip": contact.HZip = dr[columnsIndex] as string; contactInitialized = true; break; case "home state": case "homestate": contact.HState = dr[columnsIndex] as string; contactInitialized = true; break; case "home country": case "homecountry": case "home country/region": contact.HCountry = dr[columnsIndex] as string; contactInitialized = true; break; case "home phone": case "homephone": contact.HPhone = dr[columnsIndex] as string; contactInitialized = true; break; case "home fax": case "homefax": contact.HFax = dr[columnsIndex] as string; contactInitialized = true; break; case "mobile phone": case "mobilephone": contact.HMobile = dr[columnsIndex] as string; contactInitialized = true; break; case "web page": case "webpage": case "personal web page": case "personalwebpage": contact.HWeb = dr[columnsIndex] as string; contactInitialized = true; break; case "company": contact.BCompany = dr[columnsIndex] as string; contactInitialized = true; break; case "business street": case "businessstreet": contact.BStreet = dr[columnsIndex] as string; contactInitialized = true; break; case "business city": case "businesscity": contact.BCity = dr[columnsIndex] as string; contactInitialized = true; break; case "business state": case "businessstate": contact.BState = dr[columnsIndex] as string; contactInitialized = true; break; case "business postal code": contact.BZip = dr[columnsIndex] as string; contactInitialized = true; break; case "business country": case "business country/region": contact.BCountry = dr[columnsIndex] as string; contactInitialized = true; break; case "job title": case "jobtitle": contact.BJobTitle = dr[columnsIndex] as string; contactInitialized = true; break; case "department": contact.BDepartment = dr[columnsIndex] as string; contactInitialized = true; break; case "office location": case "officelocation": contact.BOffice = dr[columnsIndex] as string; contactInitialized = true; break; case "business phone": case "businessphone": contact.BOffice = dr[columnsIndex] as string; contactInitialized = true; break; case "business fax": case "businessfax": contact.BFax = dr[columnsIndex] as string; contactInitialized = true; break; case "business web page": case "businesswebpage": contact.BWeb = dr[columnsIndex] as string; contactInitialized = true; break; case "e-mail address": case "e-mailaddress": case "emailaddress": case "e-mail": case "email": contact.HEmail = dr[columnsIndex] as string; contactInitialized = true; break; case "e-mail display name": case "e-maildisplayname": case "emaildisplayname": case "name": displayName = dr[columnsIndex] as string; contactInitialized = true; break; case "birthday": birthday = dr[columnsIndex] as string; contactInitialized = true; break; case "nickname": nickname = dr[columnsIndex] as string; contactInitialized = true; break; } } } } if (!contactInitialized) { WebmailResourceManager resMan = (new WebmailResourceManagerCreator()).CreateResourceManager(); Log.WriteLine("import Page_Load", "Error: CSV file has invalid format"); _jsErrorCode = 3; _jsContactsImported = 0; Session[Constants.sessionReportText] = string.Format(@"{0}", resMan.GetString("ErrorInvalidCSV")); break; } string fullName; if (nickname != string.Empty) { fullName = string.Format("{0} \"{1}\" {2}", firstName, nickname, lastName); } else { fullName = string.Format("{0} {1}", firstName, lastName); } contact.FullName = fullName; try { DateTime birthdayDate = DateTime.Parse(birthday); contact.BirthdayDay = (byte)birthdayDate.Day; contact.BirthdayMonth = (byte)birthdayDate.Month; contact.BirthdayYear = (short)birthdayDate.Year; } catch {} contacts.Add(contact); } DbStorage storage = DbStorageCreator.CreateDatabaseStorage(acct); try { storage.Connect(); foreach (AddressBookContact contact in contacts) { contact.AutoCreate = true; try { storage.CreateAddressBookContact(contact); _jsContactsImported++; } catch { } } _jsErrorCode = 1; WebmailResourceManager resMan = (new WebmailResourceManagerCreator()).CreateResourceManager(); Session[Constants.sessionReportText] = string.Format(@"{0} {1} {2}", resMan.GetString("InfoHaveImported"), _jsContactsImported, resMan.GetString("InfoNewContacts")); } finally { storage.Disconnect(); } } catch { Log.WriteLine("import Page_Load", "Error while importing contacts"); _jsErrorCode = 0; _jsContactsImported = 0; } } } } } }
public override void Connect() { _dbStorage.Connect(); }
public override Dictionary <long, string> Synchronize(FolderCollection foldersTree) { DbStorage dbStorage = DbStorageCreator.CreateDatabaseStorage(_account); FolderCollection folders = new FolderCollection(); FolderCollection.CreateFolderListFromTree(ref folders, foldersTree); ArrayList pop3Uids = new ArrayList(); bool downloadErrorOccured = false; Folder fld = folders[FolderType.Inbox]; if (fld != null) { if (fld.SyncType == FolderSyncType.DirectMode) { if (!_updatedFolders.ContainsKey(fld.ID)) { _updatedFolders.Add(fld.ID, fld.FullPath); } return(_updatedFolders); } if (fld.SyncType == FolderSyncType.DontSync) { return(_updatedFolders); } try { dbStorage.Connect(); // get new messages start index string[] pop3DbUids = dbStorage.GetUids(); string[] pop3ServerUids = _pop3Obj.GetMessageUids(); ArrayList dbUidsToDelete = new ArrayList(); ArrayList pop3ServerIndexesToDownload = new ArrayList(); foreach (string pop3DbUid in pop3DbUids) { if (Array.IndexOf(pop3ServerUids, pop3DbUid) == -1) { dbUidsToDelete.Add(pop3DbUid); } } foreach (string pop3ServerUid in pop3ServerUids) { if (Array.IndexOf(pop3DbUids, pop3ServerUid) == -1) { pop3ServerIndexesToDownload.Add(_pop3Obj.GetMessageIndexFromUid(pop3ServerUid)); } } if ((_account.MailMode == MailMode.KeepMessagesOnServer) || (_account.MailMode == MailMode.KeepMessagesOnServerAndDeleteMessageWhenItsRemovedFromTrash)) { object[] serverUidsToDelete = dbStorage.GetOldMessagesUids(_account.MailsOnServerDays); // delete from server if (serverUidsToDelete.Length > 0) { DeleteMessages(serverUidsToDelete, fld); } } // retrieve new messages GetNewMessagesFromServerAndSaveToDb(dbStorage, fld, (int[])pop3ServerIndexesToDownload.ToArray(typeof(int)), out downloadErrorOccured, ref pop3Uids); if ((fld.SyncType == FolderSyncType.NewEntireMessages) || (fld.SyncType == FolderSyncType.NewHeadersOnly)) { return(_updatedFolders); } // delete messages from db if (dbUidsToDelete.Count > 0) { WebMailMessageCollection msgsToDelete = dbStorage.LoadMessagesByUids((string[])dbUidsToDelete.ToArray(typeof(string)), fld, false); dbStorage.DeleteMessages(msgsToDelete.ToIDsCollection(), fld); if (!_updatedFolders.ContainsKey(fld.ID)) { _updatedFolders.Add(fld.ID, fld.FullPath); } } } finally { if (!downloadErrorOccured) { // get all uids and save it to db pop3Uids = ArrayList.Adapter(_pop3Obj.GetMessageUids()); dbStorage.ReplaceUids(pop3Uids.ToArray()); } else { dbStorage.SaveUids(pop3Uids.ToArray()); } dbStorage.Disconnect(); } } return(_updatedFolders); }
protected void Page_Load(object sender, System.EventArgs e) { string hash = Request.QueryString["hash"] as string; string screen = Request.QueryString["scr"] as string; string to = Request.QueryString["to"] as string; if ((hash != null) && (hash.Length >= 0)) { WebmailSettings settings = (new WebMailSettingsCreator()).CreateWebMailSettings(); TempRow row = null; DbStorage storage = DbStorageCreator.CreateDatabaseStorage(null); try { storage.Connect(); row = storage.GetTempRow(-1, string.Format(@"sessionHash_{0}", hash)); if (row != null) { storage.DeleteTempRow(row.ID); } else { throw new WebMailException("Temp Row Is NULL"); } } catch (Exception ex) { Log.WriteException(ex); Response.Redirect(@"../default.aspx", true); } finally { storage.Disconnect(); } if (row != null) { Account acct = Account.LoadFromDb(row.IDAcct, -1, false); if (Session[Constants.sessionAccount] == null) { Session.Add(Constants.sessionAccount, acct); } else { Session[Constants.sessionAccount] = acct; } if (Session[Constants.sessionUserID] == null) { Session.Add(Constants.sessionUserID, acct.IDUser); } else { Session[Constants.sessionUserID] = acct.IDUser; } WMStartPage page = WMStartPage.Mailbox; try { short scrNum = short.Parse(screen); page = (WMStartPage)scrNum; } catch {} switch (page) { case WMStartPage.NewMessage: if (to != null) { to = string.Format(@"&to={0}", to); } goto default; case WMStartPage.Settings: goto default; case WMStartPage.Contacts: goto default; case WMStartPage.Mailbox: goto default; case WMStartPage.Calendar: goto default; default: string check = string.Empty; if (acct.GetMailAtLogin) { check = "check=1&"; } HttpContext.Current.Response.Redirect(string.Format(@"../webmail.aspx?" + check + @"start={0}{1}", (int)page, to)); break; } } } }