Пример #1
0
            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;
            }
Пример #2
0
        //<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();

            }
        }
Пример #3
0
        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) { }
 }
Пример #6
0
 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;
 }
Пример #8
0
 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;
        }
Пример #11
0
        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;
        }
Пример #12
0
 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;
        }
Пример #14
0
        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;
        }
Пример #15
0
 public SMSSender(OpenMassSenderCore.OpenMassSenderDBDataSet.SenderAccountRow sender)
 {
     this.sender = sender;
 }
Пример #16
0
 public SendStatusChanged(OpenMassSenderCore.OpenMassSenderDBDataSet.ReceiverRow receiver,string status)
 {
     this.receiver = receiver;
     this.status = status;
 }
Пример #17
0
 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);
 }