public virtual bool SendEmail(QueuedEmail queuedEmail) { var result = false; try { var smtpContext = new SmtpContext(queuedEmail.EmailAccount); var msg = ConvertEmail(queuedEmail); _emailSender.SendEmail(smtpContext, msg); queuedEmail.SentOnUtc = DateTime.UtcNow; result = true; } catch (Exception exc) { Logger.Error(string.Concat(T("Admin.Common.ErrorSendingEmail"), ": ", exc.Message), exc); } finally { queuedEmail.SentTries = queuedEmail.SentTries + 1; UpdateQueuedEmail(queuedEmail); } return(result); }
public static void SendMail(SmtpContext smtp, List <string> toAddressList, string fromAddress, string fromDisplayName, string title, string htmlBody) { System.Net.Mail.MailMessage msg = new System.Net.Mail.MailMessage(); foreach (string address in toAddressList) { msg.To.Add(address); } msg.From = new MailAddress(fromAddress, fromDisplayName, MyEncoding); //发件人地址,发件人姓名,编码 msg.Subject = title; //邮件标题 msg.SubjectEncoding = MyEncoding; msg.Body = htmlBody; //邮件内容 msg.BodyEncoding = MyEncoding; msg.IsBodyHtml = true; msg.Priority = MailPriority.Normal; SmtpClient client = new SmtpClient(); client.Host = smtp.Server; if (smtp.Port != 0) { client.Port = smtp.Port;//如果不指定端口,默认端口为25 } if (!string.IsNullOrEmpty(smtp.UserName)) { client.Credentials = new System.Net.NetworkCredential(smtp.UserName, smtp.Password); //向SMTP服务器提交认证信息 } client.EnableSsl = smtp.EnableSSL; //默认为false client.Send(msg); }
public override void Begin(IConnection connection) { _logger = _logger.ForContext("ConnectionId", connection.Id); Context = new SmtpContext(connection, new SmtpSession()); Connection.SendLine("220 {0}", NetworkHelper.GetLocalDnsHostName()); }
public override void Begin(IConnection connection) { _logger = _logger.ForContext("ConnectionId", connection.Id); Context = new SmtpContext(connection, new SmtpSession()); Connection.SendLine("220 {0}", NetworkHelper.GetLocalDnsHostName()); }
/// <summary> /// Executes a task /// </summary> public void Execute() { var maxTries = 3; var queuedEmails = _queuedEmailService.SearchEmails(null, null, null, null, true, maxTries, false, 0, 10000); foreach (var qe in queuedEmails) { var bcc = String.IsNullOrWhiteSpace(qe.Bcc) ? null : qe.Bcc.Split(new char[] { ';' }, StringSplitOptions.RemoveEmptyEntries); var cc = String.IsNullOrWhiteSpace(qe.CC) ? null : qe.CC.Split(new char[] { ';' }, StringSplitOptions.RemoveEmptyEntries); try { var smtpContext = new SmtpContext(qe.EmailAccount); var msg = new EmailMessage( new EmailAddress(qe.To, qe.ToName), qe.Subject, qe.Body, new EmailAddress(qe.From, qe.FromName)); if (qe.ReplyTo.HasValue()) { msg.ReplyTo.Add(new EmailAddress(qe.ReplyTo, qe.ReplyToName)); } if (cc != null) { msg.Cc.AddRange(cc.Where(x => x.HasValue()).Select(x => new EmailAddress(x))); } if (bcc != null) { msg.Bcc.AddRange(bcc.Where(x => x.HasValue()).Select(x => new EmailAddress(x))); } _emailSender.SendEmail(smtpContext, msg); qe.SentOnUtc = DateTime.UtcNow; } catch (Exception exc) { Logger.Error(string.Format("Error sending e-mail: {0}", exc.Message), exc); } finally { qe.SentTries = qe.SentTries + 1; _queuedEmailService.UpdateQueuedEmail(qe); } } }
/// <summary> /// Sends a queued email /// </summary> /// <param name="queuedEmail">Queued email</param> /// <returns>Whether the operation succeeded</returns> public virtual bool SendEmail(QueuedEmail queuedEmail) { var result = false; try { var bcc = String.IsNullOrWhiteSpace(queuedEmail.Bcc) ? null : queuedEmail.Bcc.Split(new char[] { ';' }, StringSplitOptions.RemoveEmptyEntries); var cc = String.IsNullOrWhiteSpace(queuedEmail.CC) ? null : queuedEmail.CC.Split(new char[] { ';' }, StringSplitOptions.RemoveEmptyEntries); var smtpContext = new SmtpContext(queuedEmail.EmailAccount); var msg = new EmailMessage( new EmailAddress(queuedEmail.To, queuedEmail.ToName), queuedEmail.Subject, queuedEmail.Body, new EmailAddress(queuedEmail.From, queuedEmail.FromName)); if (queuedEmail.ReplyTo.HasValue()) { msg.ReplyTo.Add(new EmailAddress(queuedEmail.ReplyTo, queuedEmail.ReplyToName)); } if (cc != null) { msg.Cc.AddRange(cc.Where(x => x.HasValue()).Select(x => new EmailAddress(x))); } if (bcc != null) { msg.Bcc.AddRange(bcc.Where(x => x.HasValue()).Select(x => new EmailAddress(x))); } _emailSender.SendEmail(smtpContext, msg); queuedEmail.SentOnUtc = DateTime.UtcNow; result = true; } catch (Exception exc) { _logger.Error(string.Concat(_localizationService.GetResource("Admin.Common.ErrorSendingEmail"), ": ", exc.Message), exc); } finally { queuedEmail.SentTries = queuedEmail.SentTries + 1; UpdateQueuedEmail(queuedEmail); } return(result); }
public virtual void Publish(ExportDeploymentContext context, ExportDeployment deployment) { var emailAccount = _emailAccountService.GetEmailAccountById(deployment.EmailAccountId); var smtpContext = new SmtpContext(emailAccount); var count = 0; foreach (var email in deployment.EmailAddresses.SplitSafe(",").Where(x => x.IsEmail())) { var queuedEmail = new QueuedEmail { From = emailAccount.ToEmailAddress(), SendManually = false, To = email, Subject = deployment.EmailSubject.NaIfEmpty(), Body = deployment.EmailSubject.NaIfEmpty(), CreatedOnUtc = DateTime.UtcNow, EmailAccountId = deployment.EmailAccountId }; foreach (var path in context.GetDeploymentFiles()) { var name = Path.GetFileName(path); queuedEmail.Attachments.Add(new QueuedEmailAttachment { StorageLocation = EmailAttachmentStorageLocation.Blob, MediaStorage = new MediaStorage { Data = File.ReadAllBytes(path) }, Name = name, MimeType = MimeTypes.MapNameToMimeType(name) }); } _queuedEmailService.InsertQueuedEmail(queuedEmail); ++count; } context.Log.Info("{0} email(s) created and queued for deployment.".FormatInvariant(count)); }
public virtual void Publish(ExportDeploymentContext context, ExportDeployment deployment) { var emailAccount = _emailAccountService.GetEmailAccountById(deployment.EmailAccountId); var smtpContext = new SmtpContext(emailAccount); var count = 0; foreach (var email in deployment.EmailAddresses.SplitSafe(",").Where(x => x.IsEmail())) { var queuedEmail = new QueuedEmail { From = emailAccount.Email, FromName = emailAccount.DisplayName, SendManually = true, To = email, Subject = deployment.EmailSubject.NaIfEmpty(), CreatedOnUtc = DateTime.UtcNow, EmailAccountId = deployment.EmailAccountId }; foreach (string path in context.DeploymentFiles) { string name = Path.GetFileName(path); queuedEmail.Attachments.Add(new QueuedEmailAttachment { StorageLocation = EmailAttachmentStorageLocation.Path, Path = path, Name = name, MimeType = MimeTypes.MapNameToMimeType(name) }); } _queuedEmailService.InsertQueuedEmail(queuedEmail); ++count; } context.Log.Information("{0} email(s) created and queued for deployment.".FormatInvariant(count)); }
private void SendCompletionEmail(DataImporterContext ctx) { var emailAccount = _emailAccountService.Value.GetDefaultEmailAccount(); var smtpContext = new SmtpContext(emailAccount); var message = new EmailMessage(); var store = _services.StoreContext.CurrentStore; var storeInfo = "{0} ({1})".FormatInvariant(store.Name, store.Url); var intro = _services.Localization.GetResource("Admin.DataExchange.Import.CompletedEmail.Body").FormatInvariant(storeInfo); var body = new StringBuilder(intro); var result = ctx.ExecuteContext.Result; if (result.LastError.HasValue()) { body.AppendFormat("<p style=\"color: #B94A48;\">{0}</p>", result.LastError); } body.Append("<p>"); body.AppendFormat("<div>{0}: {1} · {2}: {3}</div>", T("Admin.Common.TotalRows"), result.TotalRecords, T("Admin.Common.Skipped"), result.SkippedRecords); body.AppendFormat("<div>{0}: {1} · {2}: {3}</div>", T("Admin.Common.NewRecords"), result.NewRecords, T("Admin.Common.Updated"), result.ModifiedRecords); body.AppendFormat("<div>{0}: {1} · {2}: {3}</div>", T("Admin.Common.Errors"), result.Errors, T("Admin.Common.Warnings"), result.Warnings); body.Append("</p>"); message.From = new EmailAddress(emailAccount.Email, emailAccount.DisplayName); if (_contactDataSettings.Value.WebmasterEmailAddress.HasValue()) { message.To.Add(new EmailAddress(_contactDataSettings.Value.WebmasterEmailAddress)); } if (message.To.Count == 0 && _contactDataSettings.Value.CompanyEmailAddress.HasValue()) { message.To.Add(new EmailAddress(_contactDataSettings.Value.CompanyEmailAddress)); } if (message.To.Count == 0) { message.To.Add(new EmailAddress(emailAccount.Email, emailAccount.DisplayName)); } message.Subject = T("Admin.DataExchange.Import.CompletedEmail.Subject").Text.FormatInvariant(ctx.Request.Profile.Name); message.Body = body.ToString(); _emailSender.Value.SendEmail(smtpContext, message); //Core.Infrastructure.EngineContext.Current.Resolve<IQueuedEmailService>().InsertQueuedEmail(new QueuedEmail //{ // From = emailAccount.Email, // FromName = emailAccount.DisplayName, // To = message.To.First().Address, // Subject = message.Subject, // Body = message.Body, // CreatedOnUtc = DateTime.UtcNow, // EmailAccountId = emailAccount.Id, // SendManually = true //}); //_services.DbContext.SaveChanges(); }
public void Execute(IJobExecutionContext context) { try { Log.Debug(""); Log.Info("Executing queued message send job"); IEmailSender _emailSender = new DefaultEmailSender(); QueuedEmailServices _queuedEmailService = ServiceProvider.GetQueuedEmailServices(); QueuedSMSServices _queuedSMSService = ServiceProvider.GetQueuedSMSServices(); ApplicationSettingsServices generalSettingsService = ServiceProvider.GetApplicationSettingsServices(); var sendTriesStart = 0; var sendTriesEnd = OpenCBSConstants.MessagingMaxSentTries; int enableSmsMsg = Convert.ToInt32(generalSettingsService.SelectParameterValue(OGeneralSettings.ENABLE_SMS_MESSAGING)); Log.Debug("Send SMS status: " + enableSmsMsg); if (enableSmsMsg == 1) { var queuedsms = _queuedSMSService.SearchSMSs(null, null, null, null, true, sendTriesStart, sendTriesEnd, false, 0, 10000); Log.Debug(""); Log.Debug("-------------------------------------"); Log.Info("Sending SMS"); Log.Debug("Queued sms count: " + queuedsms.Count); foreach (var qe in queuedsms) { try { ISms sms = new EstoreSms(); sms.UserName = Convert.ToString(generalSettingsService.SelectParameterValue(OGeneralSettings.SMS_GATEWAY_USERNAME)); sms.Password = Convert.ToString(generalSettingsService.SelectParameterValue(OGeneralSettings.SMS_GATEWAY_PASSWORD)); sms.Message = qe.Message; sms.AddRecipient(qe.Recipient); sms.MessageFrom = qe.From; qe.Response = sms.SendSms(); if (qe.Response.ToLower().Contains("ok")) { qe.SentOnUtc = DateTime.UtcNow; } Log.Info(qe.Response); } catch (Exception exc) { Log.Error(string.Format("Error sending sms: {0}", exc.Message), exc); } finally { qe.SentTries = qe.SentTries + 1; _queuedSMSService.Update(qe); } } } var queuedEmails = _queuedEmailService.SearchEmails(null, null, null, null, true, sendTriesStart, sendTriesEnd, false, 0, 10000); Log.Debug(""); Log.Debug(""); Log.Debug("-------------------------------------"); Log.Info("Sending Emails"); Log.Debug("Queued email count: " + queuedEmails.Count); foreach (var qe in queuedEmails) { var bcc = String.IsNullOrWhiteSpace(qe.Bcc) ? null : qe.Bcc.Split(new char[] { ';' }, StringSplitOptions.RemoveEmptyEntries); var cc = String.IsNullOrWhiteSpace(qe.CC) ? null : qe.CC.Split(new char[] { ';' }, StringSplitOptions.RemoveEmptyEntries); try { var smtpContext = new SmtpContext(qe.EmailAccount); var msg = new EmailMessage( new EmailAddress(qe.To, qe.ToName), qe.Subject, qe.Body, new EmailAddress(qe.From, qe.FromName)); if (qe.ReplyTo.HasValue()) { msg.ReplyTo.Add(new EmailAddress(qe.ReplyTo, qe.ReplyToName)); } if (cc != null) { msg.Cc.AddRange(cc.Where(x => x.HasValue()).Select(x => new EmailAddress(x))); } if (bcc != null) { msg.Bcc.AddRange(bcc.Where(x => x.HasValue()).Select(x => new EmailAddress(x))); } _emailSender.SendEmail(smtpContext, msg); qe.SentOnUtc = DateTime.UtcNow; } catch (Exception exc) { Log.Error(string.Format("Error sending e-mail: {0}", exc.Message), exc); } finally { qe.SentTries = qe.SentTries + 1; _queuedEmailService.Update(qe); } } Log.Info("Queued message send completed"); } catch (Exception exc) { Log.Error(exc); } }