Query SMTP settings when sending email
Note: This code sample uses the IInstanceSettingsBundle interface available in
using kCura.Agent; using Relativity.API; using System; using System.Collections.Generic; using System.Net; using System.Net.Mail; namespace SendRelativityEmail { [System.Runtime.InteropServices.Guid("ad664098-f186-4b4d-9219-728f82a5fa15")] [kCura.Agent.CustomAttributes.Name("Send Relativity Email")] public class SendRelativityEmail : AgentBase { static string smtpPasswordValue; static int smtpPortValue; static string smtpUserValue; static string smtpServerValue; public override void Execute() { SMTPSetting smtpPassword = new SMTPSetting { Section = "kCura.Notification", Name = "SMTPPassword" }; SMTPSetting smtpPort = new SMTPSetting { Section = "kCura.Notification", Name = "SMTPPort" }; SMTPSetting smtpServer = new SMTPSetting { Section = "kCura.Notification", Name = "SMTPServer" }; SMTPSetting smtpUser = new SMTPSetting { Section = "kCura.Notification", Name = "SMTPUserName" }; List<SMTPSetting> smtpSettings = new List<SMTPSetting> { smtpPort, smtpServer, smtpUser, smtpPassword }; IInstanceSettingsBundle instanceSettingsBundle = this.Helper.GetInstanceSettingBundle(); foreach (var smtpInstanceSettingSingle in smtpSettings) { RaiseMessage("Beginning query", 1); try { GetSMTPValue(smtpInstanceSettingSingle.Name, smtpInstanceSettingSingle, instanceSettingsBundle); } catch (Exception ex) { RaiseError("Failed to pull data values", ex.Message + "\r\n " + ex.StackTrace); } } try { string toAddress = "ToAddress@Email.Com"; string fromAddress = "NoReply@relativity.one"; string subject = "This is only a test!"; SendEmail(toAddress, fromAddress, subject); RaiseMessage("Sending email now...", 1); } catch (Exception ex) { RaiseError("Failed to send E-mail! ", ex.Message + "\r\n " + ex.StackTrace); } } private static void SendEmail(string emailTo, string emailFrom, string emailSubject) { MailMessage emailOut = new MailMessage(emailFrom, emailTo); SmtpClient client = new SmtpClient(); client.Port = smtpPortValue; client.DeliveryMethod = SmtpDeliveryMethod.Network; client.UseDefaultCredentials = false; client.Host = smtpServerValue; emailOut.Subject = emailSubject; emailOut.IsBodyHtml = true; client.Credentials = new NetworkCredential(smtpUserValue, smtpPasswordValue); client.Send(emailOut); } private static void GetSMTPValue(string settingName, SMTPSetting smtpInstanceSettingSingle, IInstanceSettingsBundle instanceSettingsBundle) { switch (settingName) { case "SMTPPassword": var singleSettingValuePass = instanceSettingsBundle.GetStringAsync(smtpInstanceSettingSingle.Section, smtpInstanceSettingSingle.Name); smtpPasswordValue = singleSettingValuePass.Result; break; case "SMTPPort": int singleSettingValuePort = Convert.ToInt32(instanceSettingsBundle.GetUIntAsync(smtpInstanceSettingSingle.Section, smtpInstanceSettingSingle.Name).Result.Value); smtpPortValue = singleSettingValuePort; break; case "SMTPUserName": var singleSettingValueUser = instanceSettingsBundle.GetStringAsync(smtpInstanceSettingSingle.Section, smtpInstanceSettingSingle.Name); smtpUserValue = singleSettingValueUser.Result; break; case "SMTPServer": var singleSettingValueServer = instanceSettingsBundle.GetStringAsync(smtpInstanceSettingSingle.Section, smtpInstanceSettingSingle.Name); smtpServerValue = singleSettingValueServer.Result; break; } } public override string Name { get { return "Send Relativity Email"; } } } public class SMTPSetting { public string Section { get; set; } public string Name { get; set; } } }