private void AsycnSendEmails(int storeId, int userId, MailMergeRecipientCollection recipients) { //REINITIALIZE THE TOKEN WITH SAVED STORE/USER CONTEXT Store store = StoreDataSource.Load(storeId); if (store != null) { Token.Instance.InitStoreContext(store); User user = UserDataSource.Load(userId); Token.Instance.InitUserContext(user); SendEmails(recipients); } }
/// <summary> /// Sends the email messages generated for this merge template /// <param name="recipients">Recipients for the message</param> /// <param name="async">If true email messages are sent asynchronously</param> /// </summary> public void Send(MailMergeRecipientCollection recipients, bool async) { if (recipients != null && recipients.Count > 0) { if (async) { SendEmailsDelegate del = new SendEmailsDelegate(AsycnSendEmails); AsyncCallback cb = new AsyncCallback(AsyncSendEmailsCallback); IAsyncResult ar = del.BeginInvoke(Token.Instance.StoreId, Token.Instance.UserId, recipients, cb, null); } else { SendEmails(recipients); } } }
/// <summary> /// Sends the email messages geneated for this email template /// </summary> private void SendEmails(MailMergeRecipientCollection recipients) { if (recipients != null && recipients.Count > 0) { foreach (MailMergeRecipient recipient in recipients) { MailMessage message = null; try { try { message = this.GenerateMessage(recipient); } catch { // SKIP THIS continue; } if (message != null) { EmailClient.Send(message); //UPDATE LAST SEND DATE FOR EmailListUser if (recipient.Parameters.ContainsKey("emailListUser")) { EmailListUser elu = (EmailListUser)recipient.Parameters["emailListUser"]; elu.LastSendDate = LocaleHelper.LocalNow; elu.Save(); } } } catch (Exception ex) { Logger.Error("Error sending email with subject '" + message.Subject + "'.", ex); } } } }
/// <summary> /// Sends the email message to the recipient list /// </summary> public void Send(MailMergeRecipientCollection recipients) { Send(recipients, true); }