Example #1
0
        /// ////////////////////////////////////////////////////////////////
        public CResultAErreur SendMail(CMailSC2I mail)
        {
            CResultAErreur result  = CResultAErreur.True;
            MailMessage    message = new MailMessage();

            message.From       = new MailAddress(mail.Expediteur);
            message.Subject    = mail.Sujet;
            message.Body       = mail.Message;
            message.IsBodyHtml = mail.IsFormatHTML;
            // Destinataires To
            if (mail.Destinataires != null)
            {
                foreach (string strDest in mail.Destinataires)
                {
                    message.To.Add(new MailAddress(strDest));
                }
            }

            // Destinataires CC
            if (mail.DestinatairesCC != null)
            {
                foreach (string strDest in mail.DestinatairesCC)
                {
                    message.CC.Add(new MailAddress(strDest));
                }
            }

            // Destinataires BCC
            if (mail.DestinatairesBCC != null)
            {
                foreach (string strDest in mail.DestinatairesBCC)
                {
                    message.Bcc.Add(new MailAddress(strDest));
                }
            }


            ArrayList lstProxy = new ArrayList();

            using (CContexteDonnee contexte = new CContexteDonnee(IdSession, true, false))
            {
                foreach (int nIdDoc in mail.DocumentsGED)
                {
                    CDocumentGED doc = new CDocumentGED(contexte);
                    if (doc.ReadIfExists(nIdDoc) && doc.ReferenceDoc != null)
                    {
                        CProxyGED proxy = new CProxyGED(IdSession, doc.ReferenceDoc);
                        // Ajouter un paramètre optionnel CopieFichierEnLocal(doc.Libelle)
                        if (proxy.CopieFichierEnLocal(mail.UseDocLabelAsFileName ? doc.Libelle : ""))
                        {
                            lstProxy.Add(proxy);
                            Attachment att = new Attachment(proxy.NomFichierLocal);
                            message.Attachments.Add(att);
                        }
                    }
                }
            }

            try
            {
                string strServeur = "";
                string strUser    = "";
                string strPass    = "";
                int    nPort      = 0;

                if (mail.SMTPServer != String.Empty)
                {
                    strServeur = mail.SMTPServer;
                    nPort      = mail.SMTPPort;
                    strUser    = mail.SMTPUser;
                    strPass    = mail.SMTPPassword;
                }
                else
                {
                    strServeur = CTimosServeurRegistre.SMTPServer;
                    nPort      = CTimosServeurRegistre.SMTPPort;
                    strUser    = CTimosServeurRegistre.SMTPUser;
                    strPass    = CTimosServeurRegistre.SMTPPassword;
                }

                using (SmtpClient clientSmtp = new SmtpClient())
                {
                    clientSmtp.Host = strServeur;
                    if (nPort > 0)
                    {
                        clientSmtp.Port = nPort;
                    }
                    if (strUser != "" || strPass != "")
                    {
                        clientSmtp.Credentials = new NetworkCredential(strUser, strPass);
                    }
                    else
                    {
                        clientSmtp.Credentials = System.Net.CredentialCache.DefaultNetworkCredentials;
                    }
                    clientSmtp.Send(message);
                }
            }
            catch (Exception e)
            {
                result.EmpileErreur(e.ToString());
                result.EmpileErreur(I.T("Error while sending mail|30000"));
            }
            finally
            {
                message.Dispose();
            }
            foreach (CProxyGED proxy in lstProxy)
            {
                proxy.Dispose();
            }
            return(result);
        }
Example #2
0
        public static void SendMails(List <CEvenementAlarm> lstEvents, CContexteDonnee ctxDonnee)
        {
            /*
             * foreach (CEvenementAlarm eventAl in lstEvents)
             * {
             *  if (eventAl.CategorieMessageAlarme == ECategorieMessageAlarme.AlarmStartStop)
             *  {
             *      if (eventAl.EventAlarmStartStop.AlarmInfo.SeverityCode == (int)EGraviteAlarmeAvecMasquage.EndAlarm)
             *          continue;
             *
             *      CListeObjetsDonnees lstConsult = new CListeObjetsDonnees(ctxDonnee, typeof(CConsultationAlarmesEnCoursInDb));
             *      lstConsult.Filtre = new CFiltreDataAvance(CConsultationAlarmesEnCoursInDb.c_nomTable,
             *           CConsultationAlarmesEnCoursInDb.c_champActiverEMail + " = 1 and Has( Emails." +
             *           CParamlArmEC_EMail.c_champParamAlarmECId + " )", null);
             *
             *      foreach (CConsultationAlarmesEnCoursInDb consult in lstConsult)
             *      {
             *          int id = consult.Id;//test
             *          if (consult.Parametres.FormuleFiltre != null)
             *          {
             *              CContexteEvaluationExpression contexte = new CContexteEvaluationExpression(eventAl.EventAlarmStartStop.AlarmInfo);
             *              if (!consult.Parametres.FormuleFiltre.Eval(contexte))
             *                  continue;
             *          }
             *
             *          List<string> lstColumnNames = new List<string>();
             *          ArrayList arrayData = new ArrayList();
             *          StringBuilder stblMessage = new StringBuilder();
             *          string [] arrayDest;
             *          string stSubject;
             *          string stSender;
             *          string st;
             *          int i = 0;
             *
             *          lstColumnNames = consult.Parametres.GetColumnNames();
             *          arrayData = consult.Parametres.GetDataToDisplay(eventAl.EventAlarmStartStop.AlarmInfo);
             *
             *          foreach(string stColumnName in lstColumnNames)
             *          {
             *              st = stColumnName + " : " + arrayData[i];
             *              stblMessage.AppendLine(st);
             *              i++;
             *          }
             *
             *          stSubject = I.T("Alarm @1|60000", eventAl.EventAlarmStartStop.AlarmInfo.AlarmeGeree.Name);
             *
             *          arrayDest = new string[consult.Emails.Count];
             *          i=0;
             *          foreach(CParamlArmEC_EMail paramlArmEC_EMail in consult.Emails)
             *          {
             *              arrayDest[i] = paramlArmEC_EMail.Email;
             *              i++;
             *          }
             *
             *          IDatabaseRegistre registre = (IDatabaseRegistre)C2iFactory.GetNew2iObjetServeur(typeof(IDatabaseRegistre), ctxDonnee.IdSession);
             *                          stSender =  (string)registre.GetValeurString("SENDER_ADDRESS","");
             *
             *          int[] docsArray = new int[0];
             *          CMailSC2I mail = new CMailSC2I(stSender, stSubject, stblMessage.ToString(),
             *              arrayDest, docsArray);
             *
             *          IExpediteurMail expediteur = (IExpediteurMail)C2iFactory.GetNewObjetForSession("CExpediteurMail", typeof(IExpediteurMail), ctxDonnee.IdSession);
             *          CResultAErreur result = expediteur.SendMail(mail);
             *      }
             *  }
             * }
             * }*/
            foreach (CEvenementAlarm eventAlarme in lstEvents)
            {
                if (eventAlarme.GetType() == typeof(CEvenementAlarmStartStop))
                {
                    CEvenementAlarmStartStop eventAl = (CEvenementAlarmStartStop)eventAlarme;
                    if (eventAl.Gravite == EGraviteAlarmeAvecMasquage.EndAlarm)
                    {
                        continue;
                    }

                    CInfoAlarmeAffichee infoAlarmeAffichee = new CInfoAlarmeAffichee(eventAl);

                    CListeObjetsDonnees lstConsult = new CListeObjetsDonnees(ctxDonnee, typeof(CConsultationAlarmesEnCoursInDb));
                    lstConsult.Filtre = new CFiltreDataAvance(CConsultationAlarmesEnCoursInDb.c_nomTable,
                                                              CConsultationAlarmesEnCoursInDb.c_champActiverEMail + " = 1 and Has( Emails." +
                                                              CParamlArmEC_EMail.c_champParamAlarmECId + " )", null);

                    foreach (CConsultationAlarmesEnCoursInDb consult in lstConsult)
                    {
                        int id = consult.Id;//test
                        if (consult.Parametres.FormuleFiltre != null)
                        {
                            CContexteEvaluationExpression contexte = new CContexteEvaluationExpression(infoAlarmeAffichee);
                            if (!consult.Parametres.FormuleFiltre.Eval(contexte))
                            {
                                continue;
                            }
                        }

                        List <string> lstColumnNames = new List <string>();
                        ArrayList     arrayData      = new ArrayList();
                        StringBuilder stblMessage    = new StringBuilder();
                        string[]      arrayDest;
                        string        stSubject;
                        string        stSender;
                        string        st;
                        int           i = 0;

                        lstColumnNames = consult.Parametres.GetColumnNames();
                        arrayData      = consult.Parametres.GetDataToDisplay(infoAlarmeAffichee);

                        foreach (string stColumnName in lstColumnNames)
                        {
                            st = stColumnName + " : " + arrayData[i];
                            stblMessage.AppendLine(st);
                            i++;
                        }

                        stSubject = I.T("Alarm @1|60000", eventAl.NomAlarmeGeree);

                        arrayDest = new string[consult.Emails.Count];
                        i         = 0;
                        foreach (CParamlArmEC_EMail paramlArmEC_EMail in consult.Emails)
                        {
                            arrayDest[i] = paramlArmEC_EMail.Email;
                            i++;
                        }

                        IDatabaseRegistre registre = (IDatabaseRegistre)C2iFactory.GetNew2iObjetServeur(typeof(IDatabaseRegistre), ctxDonnee.IdSession);
                        stSender = (string)registre.GetValeurString("SENDER_ADDRESS", m_strExpMailParDefaut);

                        int[]     docsArray = new int[0];
                        CMailSC2I mail      = new CMailSC2I(stSender, stSubject, stblMessage.ToString(),
                                                            arrayDest, null, null, docsArray);

                        IExpediteurMail expediteur = (IExpediteurMail)C2iFactory.GetNewObjetForSession("CExpediteurMail", typeof(IExpediteurMail), ctxDonnee.IdSession);
                        CResultAErreur  result     = expediteur.SendMail(mail);
                    }
                }
            }
        }