Пример #1
0
        public override CResultAErreur TraitementAvantSauvegarde(sc2i.data.CContexteDonnee contexte)
        {
            CResultAErreur result = base.TraitementAvantSauvegarde(contexte);

            if (!result)
            {
                return(result);
            }
            DataTable table = contexte.Tables[GetNomTable()];

            if (table == null)
            {
                return(result);
            }
            ArrayList lst = new ArrayList(table.Rows);

            foreach (DataRow row in new ArrayList(table.Rows))
            {
                if (row.RowState == DataRowState.Added)
                {
                    C2iMail          mail      = new C2iMail(row);
                    CTracabiliteMail traceMail = new CTracabiliteMail(contexte);
                    if (!traceMail.ReadIfExists(new CFiltreData(
                                                    CTracabiliteMail.c_champMessageUid + " = @1", mail.MessageId)))
                    {
                        traceMail.CreateNewInCurrentContexte();
                        traceMail.MessageUid    = mail.MessageId;
                        traceMail.DateReception = mail.DateReception;
                        traceMail.CompteMail    = mail.CompteMail;
                    }
                }
            }

            return(result);
        }
Пример #2
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);
        }