public string replaceWildCards(OpenMassSenderCore.OpenMassSenderDBDataSet.ReceiverRow receiver) { Regex datePattern = new Regex(@"\$DATE\((.*?)\)"); Regex medatadataPattern = new Regex(@"\$META\((.*?)\)"); string ret = message; if (message.Contains(Wildcards.DATE)) { foreach (Match m in datePattern.Matches(ret)) { string datepattern = m.Value.Split('(')[1].Split(')')[0]; ret = ret.Replace(m.Value, DateTime.Now.ToString(datepattern)); } } if (message.Contains(Wildcards.META) && receiver!=null) { Dictionary<string, string> md = receiver.getMetadataList(); foreach (Match m in medatadataPattern.Matches(ret)) { string datepattern = m.Value.Split('(')[1].Split(')')[0]; string value=null; try { md.TryGetValue(datepattern,out value); } catch (Exception ex) { } Console.WriteLine("replacing:" + m.Value + " with:" + datepattern); if (value != null) ret = ret.Replace(m.Value, value); } } return ret; }
//<summary>Call this to send a message to multiple receivers by using multiple threads</summary> //<param name="statusCallback">Lamda that gets called every time a message has been sended, //it returns the status of the transmition(FAILED,SUCCEDED) along with the receiver's inforation</param> public void send(OpenMassSenderCore.OpenMassSenderDBDataSet.SenderAccountRow senderAccount,OpenMassSenderCore.OpenMassSenderDBDataSet.MessageRow message, List<OpenMassSenderCore.OpenMassSenderDBDataSet.ReceiverRow> receivers, Action<SendStatusChanged> statusCallback) { status.all.AddRange(receivers); status.pending.AddRange(receivers); int threads = Math.Min(receivers.Count, max_threads); totalSends = receivers.Count; int sendsPerThread = receivers.Count / threads; if (receivers.Count < threads) sendsPerThread = 1; for (int c = 0; c < threads; c++) { Sender sender = null; if (message.type.Equals("sms")) sender = new SMSSender(senderAccount); else if (message.type.Equals("email")) sender = new MailSender(senderAccount); int count = sendsPerThread; if (sendsPerThread * c + count > receivers.Count) count = receivers.Count - sendsPerThread * c; List<OpenMassSenderCore.OpenMassSenderDBDataSet.ReceiverRow> subsetReceivers = receivers.GetRange(sendsPerThread * c, count); SenderThread senderThread = new SenderThread(this,status, message, sender, subsetReceivers, (sentStatus) => statusCallback(sentStatus)); Thread workerThread = new Thread(senderThread.send); activeThreads.Add(workerThread); workerThread.Start(); } }
public AddNewJob(OpenMassSenderCore.OpenMassSenderDBDataSet.JobRow job) { InitializeComponent(); if (job == null) this.job = JobTableAdapter.getInstance().getNewRow(); else { editingJob = true; job.messageObject = (OpenMassSenderCore.OpenMassSenderDBDataSet.MessageRow)MessageTableAdapter.getInstance().GetDataById(job.message).Rows[0]; job.scheduleObject = (OpenMassSenderCore.OpenMassSenderDBDataSet.JobScheduleRow)JobScheduleTableAdapter.getInstance().GetDataByID(job.schedule).Rows[0]; if (job.query == null) { recieverstextBox.Text = "group=" + job.group + ";"; } else recieverstextBox.Text = "group=" + job.group + ";" + job.query; jobtextbox.Text = job.job_name; job.messageObject.linkedFile = ""; this.job = job; executejob.Text = job.scheduleObject.nextExecution.ToString(); ; button4.Text = "Update job"; } }
public void submitRow(OpenMassSenderCore.OpenMassSenderDBDataSet.JobScheduleRow row) { try { OpenMassSenderDBDataSet.getInstance().JobSchedule.Rows.Add(row); Update(OpenMassSenderDBDataSet.getInstance().JobSchedule); } catch (Exception ex) { Console.WriteLine("subbbbbbbbbbbbbbbbb:" + ex.StackTrace); } }
public void submitRow(OpenMassSenderCore.OpenMassSenderDBDataSet.MessageRow row) { try { OpenMassSenderDBDataSet.getInstance().Message.Rows.Add(row); Update(OpenMassSenderDBDataSet.getInstance().Message); } catch (Exception ex) { } }
public SenderThread(MassSender massSender,PendingJobStatus pendingJobStatus,OpenMassSenderCore.OpenMassSenderDBDataSet.MessageRow message,Sender sender, List<OpenMassSenderCore.OpenMassSenderDBDataSet.ReceiverRow> receivers, Action<SendStatusChanged> statusCallback) { this.massSender = massSender; this.pendingJobStatus = pendingJobStatus; this.message = message; this.receivers = receivers; this.sender = sender; this.statusCallback = statusCallback; }
public OpenMassSenderCore.OpenMassSenderDBDataSet.JobScheduleRow getNewRow(OpenMassSenderCore.OpenMassSenderDBDataSet.JobRow job) { OpenMassSenderCore.OpenMassSenderDBDataSet.JobScheduleRow schedule=OpenMassSenderDBDataSet.getInstance().JobSchedule.NewJobScheduleRow(); int? id = this.SelectLastAddedId(); if(id!=null)schedule.ID = Convert.ToInt32(id) + 1; job.schedule =schedule.ID; job.scheduleObject = schedule; schedule.repeatable = RepeatableJob.NON_REPEATABLE; return schedule; }
public MailSender(OpenMassSenderCore.OpenMassSenderDBDataSet.SenderAccountRow sender) { this.sender = sender; smtpClient = new SmtpClient(); smtpClient.Port = sender.port; smtpClient.DeliveryMethod = SmtpDeliveryMethod.Network; smtpClient.EnableSsl = true; smtpClient.UseDefaultCredentials = false; smtpClient.Credentials = new System.Net.NetworkCredential(sender.email, sender.password); smtpClient.Host = (string)sender.host; }
public void submitRow(OpenMassSenderCore.OpenMassSenderDBDataSet.JobRow row) { try { MessageTableAdapter.getInstance().submitRow(row.messageObject); JobScheduleTableAdapter.getInstance().submitRow(row.scheduleObject); OpenMassSenderDBDataSet.getInstance().Job.Rows.Add(row); Update(OpenMassSenderDBDataSet.getInstance().Job); } catch (Exception ex) { } }
public MessageVariablesForm(OpenMassSenderCore.OpenMassSenderDBDataSet.MessageRow message) { this.message = message; this.variables = message.replacableVariablesMap; InitializeComponent(); foreach (KeyValuePair<string, string> entry in variables) { string[] row = {entry.Key,(entry.Value==null?"[dynamic]":entry.Value)}; var listViewItem = new ListViewItem(row); lvVariables.Items.Add(listViewItem); } lvVariables.View = View.Details; }
public MessageForm(OpenMassSenderCore.OpenMassSenderDBDataSet.MessageRow message,Form frm) { formparent = frm as AddNewJob; InitializeComponent(); this.message = message; if (message.linkedFile != null && message.linkedFile!="") { tbContent.Enabled = false; lblLinkedFile.Text = message.linkedFile; btnFileLink.Text = "Unlink file"; } this.tbContent.Text = message.message; this.tbSubject.Text = message.subject; }
public override string send(OpenMassSenderCore.OpenMassSenderDBDataSet.MessageRow message,OpenMassSenderCore.OpenMassSenderDBDataSet.ReceiverRow receiver) { try { System.Net.Mail.MailMessage mail = new System.Net.Mail.MailMessage(sender.email, receiver.email); mail.Subject = message.subject; mail.Body = message.replaceWildCards(receiver); smtpClient.Send(mail); } catch (Exception ex) { Logger.error(ex.Message); return OpenMassSenderCore.OpenMassSenderDBDataSet.MessageStatus.ERROR; } return OpenMassSenderCore.OpenMassSenderDBDataSet.MessageStatus.SUCCEED; }
public OpenMassSenderCore.OpenMassSenderDBDataSet.MessageRow getNewRow(OpenMassSenderCore.OpenMassSenderDBDataSet.JobRow job) { OpenMassSenderCore.OpenMassSenderDBDataSet.MessageRow message = OpenMassSenderDBDataSet.getInstance().Message.NewMessageRow(); message.subject = ""; message.replaceVariables = ""; message.user = Convert.ToInt32(UserTableAdapter.getInstance().userid); message.type =""; message.message = ""; message.linkedFile =""; message.ID = Convert.ToInt32(this.SelectLastAddedId()) + 1; job.message = message.ID; job.MessageRow = message; job.messageObject = message; return message; }
public override string send(OpenMassSenderCore.OpenMassSenderDBDataSet.MessageRow message, OpenMassSenderCore.OpenMassSenderDBDataSet.ReceiverRow receiver) { try { string url = sender.sms_url; url = url.Replace("$to", receiver.phone_number.ToString()); url = url.Replace("$message", message.replaceWildCards(receiver)); HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url); HttpWebResponse response = (HttpWebResponse)request.GetResponse(); string responseString = new StreamReader(response.GetResponseStream()).ReadToEnd(); } catch (Exception ex) { return OpenMassSenderCore.OpenMassSenderDBDataSet.MessageStatus.ERROR; } return OpenMassSenderCore.OpenMassSenderDBDataSet.MessageStatus.SUCCEED; }
public SMSSender(OpenMassSenderCore.OpenMassSenderDBDataSet.SenderAccountRow sender) { this.sender = sender; }
public SendStatusChanged(OpenMassSenderCore.OpenMassSenderDBDataSet.ReceiverRow receiver,string status) { this.receiver = receiver; this.status = status; }
public abstract string send(OpenMassSenderCore.OpenMassSenderDBDataSet.MessageRow message, OpenMassSenderCore.OpenMassSenderDBDataSet.ReceiverRow receiver);
public void submitRow(OpenMassSenderCore.OpenMassSenderDBDataSet.UserRow row) { dataTable.Rows.Add(row); Update(dataTable); }
//<sumarry>Adds a new receiver</summary> //<param name="job">The receiver to add</param> public void add(string group, OpenMassSenderCore.OpenMassSenderDBDataSet.ReceiverRow receiver) { }
public void submitRow(OpenMassSenderCore.OpenMassSenderDBDataSet.ReceiverRow row) { OpenMassSenderDBDataSet.getInstance().Receiver.Rows.Add(row); Update(OpenMassSenderDBDataSet.getInstance().Receiver); }
public void setMessage(OpenMassSenderCore.OpenMassSenderDBDataSet.MessageRow message) { this.Text = "Message Preview - " + message.subject; this.webBrowser1.DocumentText = message.replaceWildCards(null); }
public MessagePreviewForm(OpenMassSenderCore.OpenMassSenderDBDataSet.MessageRow message) { InitializeComponent(); setMessage(message); }