public override CResultAErreur VerifieDonnees(sc2i.data.CObjetDonnee objet) { CResultAErreur result = CResultAErreur.True; try { CCompteMail compteMail = objet as CCompteMail; if (compteMail != null) { if(string.IsNullOrEmpty(compteMail.Libelle)) result.EmpileErreur(I.T("Mail Account Lable cannot be empty|10007")); } } catch (Exception e) { result.EmpileErreur(e.Message); } return result; }
//---------------------------------------------------------------------------- public CResultAErreur RetrieveMails(int nIdCompteMail) { CResultAErreur result = CResultAErreur.True; using (CContexteDonnee contexteDeReception = new CContexteDonnee(IdSession, true, false)) { CCompteMail compteMail = new CCompteMail(contexteDeReception); if (compteMail.ReadIfExists(nIdCompteMail)) { CRecepteurMails recepteur = new CRecepteurMails(); result = compteMail.EnregistreEvenement(CCompteMail.c_strIdEvenementBeforeRetrieve, true); if (result) { result = recepteur.RetrieveMails(compteMail); if(result) result = compteMail.EnregistreEvenement(CCompteMail.c_strIdEvenementAfterRetrieve, true); } } } return result; }
/// <summary> /// Récupère les nouveaux Messaegs du serveur de Mails POP3 dont les informations de /// connextion sont indiqués dans le paramètre /// </summary> /// <param name="parametre">Parametres de connexion au serveur de mails POP3</param> /// <returns>Le Data du Result contient un liste de MailMessageEx</returns> public CResultAErreur RetrieveMails(CCompteMail compteMail) { CResultAErreur result = CResultAErreur.True; if (compteMail == null) { result.EmpileErreur("Erreur dans CRecepteurMail: compteMail est nul"); } m_compteMail = compteMail; m_compteMail.BeginEdit(); m_compteMail.DateDernierReleve = DateTime.Now; CParametreCompteMail parametre = compteMail.ParametreCompteMail; if (parametre == null) { result.EmpileErreur("Erreur dans CRecepteurMail: Le ¨Parametre de compte est nul"); return(result); } using (Pop3Client client = new Pop3Client()) { try { client.Connect(parametre.PopServer, parametre.PopPort, parametre.UseSsl); // Authenticate ourselves towards the server client.Authenticate(parametre.User, parametre.Password); // Get the number of messages in the inbox int messageCount = client.GetMessageCount(); // Messages are numbered in the interval: [1, messageCount] // Ergo: message numbers are 1-based. for (int i = 1; i <= messageCount; i++) { MessageHeader messageHead = client.GetMessageHeaders(i); Message messageRecu = null; CTracabiliteMail traceMail = new CTracabiliteMail(m_compteMail.ContexteDonnee); CFiltreData filtreIfExist = new CFiltreData( CTracabiliteMail.c_champMessageUid + " = @1 and " + CCompteMail.c_champId + " = @2 ", messageHead.MessageId, compteMail.Id); if (!traceMail.ReadIfExists(filtreIfExist)) { try { C2iMail mail = new C2iMail(compteMail.ContexteDonnee); mail.CreateNewInCurrentContexte(); mail.CompteMail = m_compteMail; if (parametre.HeaderOnly) { mail.FillFromHeader(messageHead); } else { messageRecu = client.GetMessage(i); mail.FillFromMessage(messageRecu); } } catch (Exception ex) { result.EmpileErreur(ex.Message); } } if (parametre.SupprimerDuServeur) { if (parametre.DelaiSuppression <= 0) { client.DeleteMessage(i); } else { DateTime dateMessage = messageHead.DateSent; TimeSpan dureeDeVie = DateTime.Now - dateMessage; if (dureeDeVie.Days >= parametre.DelaiSuppression) { client.DeleteMessage(i); } } } } } catch (Exception exception) { result.EmpileErreur(exception.Message); } finally { client.Disconnect(); } } if (!result) { m_compteMail.LastErreur = result.MessageErreur; } else { m_compteMail.LastErreur = I.T("Mails succesfully retrived|10000"); } result += m_compteMail.CommitEdit(); return(result); }