public void SendResetEmail(EmailMessage email) { var transmission = new SparkPost.Transmission { Content = { TemplateId = ConfigurationManager.AppSettings["reset-password"] }, Options = new Options { Transactional = true } }; var recipient = new Recipient { Address = new Address { Email = email.To }, SubstitutionData = { ["Usuario"] = email.UserName, ["ResetToken"] = email.Url, ["Email"] = email.To } }; transmission.Recipients.Add(recipient); var client = new Client(ConfigurationManager.AppSettings["SparkPostApiKey"]); client.CustomSettings.SendingMode = SendingModes.Sync; var response = client.Transmissions.Send(transmission); var status = response.Result.StatusCode; }
public void SendEmailInvoice(EmailMessage email) { var transmission = new SparkPost.Transmission { Content = { TemplateId = "invoce-tu-bus" }, Options = new Options { Transactional = true } }; var recipient = new Recipient { Address = new Address { Email = email.To }, SubstitutionData = { ["DateInvoce"] = DateTime.Now.ToLongDateString(), ["Money"] = email.Url, ["Description"] = email.Message } }; transmission.Recipients.Add(recipient); var client = new Client(ConfigurationManager.AppSettings["SparkPostApiKey"]); client.CustomSettings.SendingMode = SendingModes.Sync; var response = client.Transmissions.Send(transmission); var status = response.Result.StatusCode; }
public async Task<SendTransmissionResponse> Send(Transmission transmission) { var request = new Request { Url = $"api/{client.Version}/transmissions", Method = "POST", Data = dataMapper.ToDictionary(transmission) }; var response = await requestSender.Send(request); if (response.StatusCode != HttpStatusCode.OK) throw new ResponseException(response); var results = Jsonification.DeserializeObject<dynamic>(response.Content).results; return new SendTransmissionResponse() { Id = results.id, ReasonPhrase = response.ReasonPhrase, StatusCode = response.StatusCode, Content = response.Content, TotalAcceptedRecipients = results.total_accepted_recipients, TotalRejectedRecipients = results.total_rejected_recipients, }; }
public static void ProcessEmails(IDbService dbService, bool immediate) { var sendEmail = CloudConfigurationManager.GetSetting("send-email"); var testEmail = CloudConfigurationManager.GetSetting("send-test-emails"); var errorCount = 0; var successCount = 0; var log = Log.ForContext("jobid", Guid.NewGuid()); //Don't execute unless email is turned on if (!string.Equals(sendEmail, "Yes", StringComparison.InvariantCultureIgnoreCase)) { Console.WriteLine("No emails sent because send-email is not set to 'Yes'"); log.Information("No emails sent because send-email is not set to 'Yes'"); return; } using (var connection = dbService.GetConnection()) { List<dynamic> pending = connection.Query(@" select emailqueue.id as id, [subject], [body], students.email as sEmail, registrations.email as rEmail from emailqueue inner join Students on students.Id = EmailQueue.Student_Id LEFT OUTER JOIN Registrations on registrations.id = EmailQueue.RegistrationId where Pending = 1 and [immediate] = @immediate", new { immediate }).ToList(); if (pending.Any()) { log.Information("{count} pending emails found", pending.Count); } foreach (var email in pending) { var emailTransmission = new Transmission { Content = new Content { From = new Address { Email = "*****@*****.**", Name = "UCD Commencement Notification" }, Subject = email.subject , Html = email.body } }; if (!string.IsNullOrWhiteSpace(testEmail)) { emailTransmission.Recipients.Add(new Recipient { Address = new Address { Email = testEmail } }); } else { emailTransmission.Recipients.Add(new Recipient { Address = new Address { Email = email.sEmail } }); if (!string.IsNullOrWhiteSpace(email.rEmail)) { emailTransmission.Recipients.Add(new Recipient { Address = new Address { Email = email.rEmail } }); } } var client = new Client(SparkPostApiKey); DateTime? sentDateTime = null; try { client.Transmissions.Send(emailTransmission).Wait(); sentDateTime = DateTime.UtcNow; //TODO: Pacific time it? successCount++; } catch (Exception ex) { //TODO: Logging. Console.WriteLine(string.Format("Exception Detected: {0}", ex.GetBaseException())); // Log.Error(ex, "There was a problem emailing {email}", email.sEmail); //I don't think we care if there are a few problems... errorCount++; log.Error(ex, ex.GetBaseException().ToString()); } if (string.IsNullOrWhiteSpace(testEmail)) { using (var ts = connection.BeginTransaction()) { //Update the db connection.Execute(@" UPDATE EmailQueue SET [Pending] = 0 ,[SentDateTime] = @sentDateTime WHERE id = @id", new { sentDateTime, id = email.id }, ts); ts.Commit(); } } } Console.WriteLine(string.Format("Sent: {0} Errors: {1}", successCount, errorCount)); log.Information("Sent: {successCount} Errors: {errorCount}", successCount, errorCount); } }
public async Task<JsonResult> SendTestEmail(string subject, string message) { var user = Repository.OfType<vUser>().Queryable.FirstOrDefault(a => a.LoginId == CurrentUser.Identity.Name); try { //Spark Email var emailTransmission = new Transmission { Content = new Content { From = new Address { Email = "*****@*****.**", Name = "UCD Commencement Notification" }, Subject = subject, Html = message } }; emailTransmission.Recipients.Add(new Recipient { Address = new Address { Email = user.Email } }); var client = new Client(CloudConfigurationManager.GetSetting("SparkPostApiKey")); await client.Transmissions.Send(emailTransmission); //To see example of using SMTP from the cloud, look in Admin/TestEmail } catch (Exception ex) { //return Json(ex.Message, JsonRequestBehavior.AllowGet); //To Debug exception return Json(false, JsonRequestBehavior.AllowGet); } return Json(true, JsonRequestBehavior.AllowGet); }