/// //////////////////////////////////////////////////////////////// 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); }
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); } } } }