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;
        }
Exemple #3
0
        /// <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);
        }