Example #1
0
        /// <summary>
        /// 接收一个邮件处理
        /// </summary>
        /// <param name="msg"></param>
        /// <param name="result"></param>
        public void HandleReceiveMail(OpenPOP.MIMEParser.Message msg, MailResult result)
        {
            string subject   = msg.Subject.ToString();//回复标题
            string body      = (string)msg.MessageBody[msg.MessageBody.Count - 1];
            string replyTime = msg.Date.ToString();
            string rawManage = msg.RawMessage;//完整的邮件信息
            string user      = msg.FromEmail;
            int    start     = subject.IndexOf("#");
            int    length    = body.IndexOf("=========================================================");

            if (length > -1)
            {
                //body = body.Substring(0, length);//回复内容
            }
            if (!CheckIsGarbageEmail(subject))//如果不是垃圾邮件
            {
                if (start < 0)
                {
                    ErrorEmail(subject, rawManage, user, replyTime, body);
                }
                else
                {
                    string sn       = subject.Substring(start);//标题截取关键字
                    bool   mailBool = UpdateReplyByEmail(subject, sn, body, replyTime, rawManage, user, result.StateText);
                    if (!mailBool)
                    {
                        ErrorEmail(subject, rawManage, user, replyTime, body);
                    }
                    else
                    {
                        result.Success += 1;
                    }
                }
            }
        }
Example #2
0
        public Task <MailResult> Send(string recipient, string subject, string message)
        {
            var tcs = new TaskCompletionSource <MailResult>();

            if (!MFMailComposeViewController.CanSendMail)
            {
                var mailResult = new MailResult(
                    false,
                    Resources.NoEmailErrorTitle,
                    Resources.NoEmailErrorMessage);
                return(Task.FromResult(mailResult));
            }

            var mailComposeViewController = new MFMailComposeViewController();

            mailComposeViewController.SetToRecipients(new[] { recipient });
            mailComposeViewController.SetSubject(subject);
            mailComposeViewController.SetMessageBody(message, false);

            mailComposeViewController.Finished += (sender, e) => {
                mailComposeViewController.DismissViewController(true, null);
                var mailResult = e.Result == MFMailComposeResult.Sent
                                  ? MailResult.Ok
                                  : new MailResult(false, null, null);
                tcs.SetResult(mailResult);
            };

            topViewControllerProvider.TopViewController.PresentViewController(mailComposeViewController, true, null);

            return(tcs.Task);
        }
Example #3
0
        void BatchTimer_Tick(object sender, EventArgs e)
        {
            this.m_batchTimer.Stop();

            if (this.m_batchTasks != null && this.m_batchTasks.Count > 0)
            {
                for (int i = this.m_batchTasks.Count - 1; i >= 0; i--)
                {
                    var task = this.m_batchTasks[i];

                    if (++task.ProcessCount <= m_maxProcessCount)
                    {
                        m_restClient.Create <Dictionary <string, bool?> >("GetBatchMailStatus", task.MessageIDs, (obj, args) =>
                        {
                            if (args.Error != null && args.Error.Faults.Count > 0)
                            {
                                var message = args.Error.Faults[0].ErrorDescription;

                                CPApplication.Current.Browser.MessageBox.Show(message, MessageBoxType.Error);
                            }
                            else
                            {
                                bool isCallbacked = false;
                                foreach (var item in args.Result)
                                {
                                    if (item.Value.HasValue)
                                    {
                                        var result = new MailResult()
                                        {
                                            IsSuccess = item.Value.Value,
                                            ID        = item.Key
                                        };

                                        System.Diagnostics.Debug.WriteLine("Callback:" + item.Key);

                                        task.Callback(result);
                                        isCallbacked = true;
                                    }
                                }

                                if (isCallbacked)
                                {
                                    this.m_batchTasks.Remove(task);
                                }
                            }

                            if (this.m_batchTasks.Count > 0)
                            {
                                this.m_batchTimer.Start();
                            }
                        });
                    }
                }
            }
        }
Example #4
0
        void Timer_Tick(object sender, EventArgs e)
        {
            this.m_timer.Stop();

            if (m_tasks != null && m_tasks.Count > 0)
            {
                var count = this.m_tasks.Count;

                for (int i = this.m_tasks.Count - 1; i >= 0; i--)
                {
                    var task = this.m_tasks[i];

                    if (++task.ProcessCount <= m_maxProcessCount)
                    {
                        m_restClient.Query <bool?>(string.Format("{0}/{1}", "GetMailStatus", task.MessageID), (obj, args) =>
                        {
                            if (args.Error != null && args.Error.Faults.Count > 0)
                            {
                                var message = args.Error.Faults[0].ErrorDescription;

                                CPApplication.Current.Browser.MessageBox.Show(message, MessageBoxType.Error);
                            }
                            else
                            {
                                if (args.Result.HasValue)
                                {
                                    var result = new MailResult
                                    {
                                        IsSuccess = args.Result.Value
                                    };

                                    task.Action(result);

                                    lock (s_syncObj)
                                    {
                                        this.m_tasks.Remove(task);
                                    }
                                }

                                Interlocked.Decrement(ref count);

                                if (count == 0 && this.m_tasks.Count > 0)
                                {
                                    this.m_timer.Start();
                                }
                            }
                        });
                    }
                    else
                    {
                        this.m_tasks.Remove(task);
                    }
                }
            }
        }
Example #5
0
 /// <summary>
 /// Sends a responce detailing the results of the client's mail request.
 /// </summary>
 public static void SendResult(IPacketReceiver client, uint mailId, MailResult result, MailError err,
                               uint itemId, int itemCount)
 {
     using (RealmPacketOut packet = new RealmPacketOut(RealmServerOpCode.SMSG_SEND_MAIL_RESULT, 20))
     {
         packet.Write(mailId);
         packet.Write((uint)result);
         packet.Write((uint)err);
         packet.Write(itemId);
         packet.Write(itemCount);
         client.Send(packet, false);
     }
 }
Example #6
0
        private MailResult HandleException(RestServiceError error)
        {
            var result = new MailResult {
                IsSuccess = true
            };

            if (error != null && error.Faults.Count > 0)
            {
                result.IsSuccess = false;
                result.Error     = error.Faults[0].ErrorDescription;
            }
            return(result);
        }
        public void SendResult(MailResult result)
        {
            if (result == MailResult.TEXT_MAIL_UNK)
            {
                return;
            }

            PacketOut Out = new PacketOut((byte)Opcodes.F_MAIL);

            Out.WriteByte(0x0F);
            Out.WriteUInt16((ushort)result);
            GetPlayer().SendPacket(Out);
        }
Example #8
0
    /// <summary>
    /// 异步操作完成后执行回调方法
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    private void SendCompletedCallback(object sender, System.ComponentModel.AsyncCompletedEventArgs e)
    {
        //同一组件下不需要回调方法,直接在此写入日志即可
        //写入日志
        //return;
        if (actionSendCompletedCallback == null)
        {
            return;
        }
        string message = string.Empty;

        this.Subject = this.Subject == null ? "" : this.Subject;
        this.Tos     = this.Tos == null ? "" : this.Tos;
        MailResult mRsult = new MailResult();

        mRsult.Subject = this.Subject;
        mRsult.Tos     = this.Tos;
        if (e.Cancelled)
        {
            message        = "异步操作取消"; mRsult.IsSuccess = false;
            message        = (string.Format("发送取消:UserState:{0},Message:{1},邮件标题:{2},接收人:{3}", (string)e.UserState, e.Error == null?"": e.Error.ToString(), this.Subject, this.Tos));
            mRsult.message = (string.Format("发送取消:UserState:{0},Message:{1},邮件标题:{2},接收人:{3}", (string)e.UserState, e.Error.ToString(), this.Subject, this.Tos));
        }
        else if (e.Error != null)
        {
            mRsult.IsSuccess = false;

            message        = (string.Format("发送失败:UserState:{0},Message:{1},邮件标题:{2},接收人:{3}", (string)e.UserState, e.Error == null ? "" : e.Error.ToString(), this.Subject, this.Tos));
            mRsult.message = message;
        }
        else
        {
            mRsult.IsSuccess = true;
            message          = (string.Format("发送失败:UserState:{0},Message:{1},邮件标题:{2},接收人:{3}", (string)e.UserState, "", this.Subject, this.Tos));
            mRsult.message   = (string.Format("发送取消:UserState:{0},Message:{1},邮件标题:{2},接收人:{3}", (string)e.UserState, "", this.Subject, this.Tos));
        }
        //执行回调方法
        actionSendCompletedCallback(mRsult);
    }
Example #9
0
 /// <summary>
 /// Sends a responce detailing the results of the client's mail request.
 /// </summary>
 public static void SendResult(IPacketReceiver client, uint mailId, MailResult result, MailError err, uint itemId, int itemCount)
 {
     using (var packet = new RealmPacketOut(RealmServerOpCode.SMSG_SEND_MAIL_RESULT, 12 + 4 + 4))
     {
         packet.Write(mailId);
         packet.Write((uint)result);
         packet.Write((uint)err);
         packet.Write(itemId);
         packet.Write(itemCount);
         client.Send(packet);
     }
 }
Example #10
0
        public JsonResult MailSendingHandler()
        {
            string email    = Request.Form["email"];
            string password = Request.Form["password"];
            string type     = Request.Form["mailType"];

            var        service = new HolidayTransferService();
            MailResult result  = new MailResult();

            switch (type)
            {
            case "annual":
                List <HolidayDetail> rlt = JsonConvert.DeserializeObject <List <HolidayDetail> >(Request.Form["staffList"]);

                Parallel.ForEach(rlt, (item, state) => {
                    if (item.PaidLeaveRemainingHours == 0 ||
                        item.HolidayStartDate > DateTime.Now ||
                        item.HolidayEndDate < DateTime.Now)
                    {
                        return;
                    }
                    string htmlData = string.Empty;
                    try
                    {
                        htmlData = service.HolidayDataConvert2Html(item);
                    }
                    catch (Exception ex)
                    {
                        result.FailureList.Add(item.ChineseName);
                        result.FailureMsg.Add(ex.Message);
                        return;
                    }
                    try
                    {
                        service.MailSending(email, password, item.Email, htmlData, "annual");
                        result.SuccessList.Add(item.ChineseName);
                    }
                    catch (Exception ex)
                    {
                        result.FailureList.Add(item.ChineseName);
                        result.FailureMsg.Add(ex.Message);
                    }
                });
                break;

            case "transfer":
                List <UserTransferList> lutl = JsonConvert.DeserializeObject <List <UserTransferList> >(Request.Form["staffList"]);
                foreach (UserTransferList ul in lutl)
                {
                    string htmlData = string.Empty;
                    var    details  = ul.UserTransferDetail.AsEnumerable().Where(r => r.TransferRemainingTime != 0);
                    if (details.Count() == 0)
                    {
                        continue;
                    }
                    try
                    {
                        htmlData = service.TransferDataConvert2Html(ul);
                    }
                    catch (Exception ex)
                    {
                        result.FailureList.Add(ul.StaffName);
                        result.FailureMsg.Add(ex.Message);
                        continue;
                    }
                    try
                    {
                        service.MailSending(email, password, ul.StaffEmail, htmlData, "transfer");
                        result.SuccessList.Add(ul.StaffName);
                    }
                    catch (Exception ex)
                    {
                        result.FailureList.Add(ul.StaffName);
                        result.FailureMsg.Add(ex.Message);
                    }
                }
                break;

            default:
                break;
            }
            return(Json(result));
        }
        public string _SendConfirmationEmail(int? eventId, string body, string isAddOn)
        {
            //Int32 id = Convert.ToInt32(eventId);
            if (eventId != null)
            {
                var ev = db.Events.Include("Reservations").Where(e => e.eventId == eventId).FirstOrDefault();
                if (ev != null)
                {
                    bool addon = Convert.ToBoolean(isAddOn);
                    string userEmail = Helpers.Helpers.GetEmailFromUser(User.Identity);
                    JavaScriptSerializer s = new JavaScriptSerializer();

                    System.Net.Mail.MailAddressCollection to = new System.Net.Mail.MailAddressCollection();
                    to.Add(Helpers.Helpers.GetEmailFromUser(ev.organizer));
                    //to.Add("*****@*****.**");
                    if (addon)
                    {
                        to.Add("*****@*****.**");
                    }
                    List<string> optionRecipients = new List<string>();
                    foreach (var reservation in ev.Reservations)
                    {
                        foreach (var option in reservation.Options)
                        {
                            foreach (var user in option.Users)
                            {
                                optionRecipients.Add(user.email);
                            }
                        }
                    }
                    foreach (var recipient in optionRecipients.Distinct())
                    {
                        to.Add(recipient);
                    }
                    System.Net.Mail.MailAddressCollection cc = new System.Net.Mail.MailAddressCollection();
                    cc.Add(userEmail);

                    System.Net.Mail.MailAddressCollection bcc = new System.Net.Mail.MailAddressCollection();
                    bcc.Add("*****@*****.**");
                    string from = userEmail ?? "*****@*****.**";
                    //string body = RenderViewToString(ControllerContext, "~/Views/Shared/_ConfirmationEmail.cshtml", ev, true);
                    string subject = String.Join(" | ",
                        "EMS Reservation Confirmation: " + ev.name,
                        ev.startTime.ToShortDateString(),
                        ev.startTime.ToShortTimeString(),
                        String.Join(", ", ev.Locations.OrderBy(l => l.locationId).Select(el => el.name).Distinct()));
                    subject = addon ? "Add On: " + subject : subject;
                    Exception mailResult = Helpers.Helpers.SendEmail(from, to, cc, bcc, subject, true, body);
                    MailResult r = new MailResult();
                    if (mailResult.Message.ToString() != "success")
                    {
                        r.Class = "warning";
                        r.Message = mailResult.Message.ToString();
                    }
                    else
                    {
                        r.Class = "success";
                        r.Message = "Your mail was sent successfully";
                    }
                    return s.Serialize(r);
                }
            }

            return string.Empty;
        }
 public void GetResendMailResult(MailResult emailResult, string playerNickname)
 {
     mailResult = emailResult;
 }
 public void GetMailResult(MailResult emailResult, string playerNickname, string securityQuestion)
 {
     mailResult = emailResult;
 }
Example #14
0
        public MailResult MailSender(DataTable salaryToSend, string description)
        {
            MailResult     mr            = new MailResult();
            List <string>  success       = new List <string>();
            List <Failure> failure       = new List <Failure>();
            StringBuilder  sbMailContent = new StringBuilder();
            Regex          pattern       = new Regex(@"[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?");

            foreach (DataRow dr in salaryToSend.Rows)
            {
                mailMessage = new MailMessage();
                mailConfig(this.sender, this.date);
                string receiver = null;
                string officer  = null;
                sbMailContent.Clear();
                sbMailContent.Append(description).Replace("\n", "<br />");
                sbMailContent.Append("<table border='1' style = 'border-collapse:collapse'>");
                foreach (DataColumn dc in salaryToSend.Columns)
                {
                    sbMailContent.Append("<tr>");
                    sbMailContent.Append("<td>");
                    sbMailContent.Append(dc.ColumnName);
                    sbMailContent.Append("</td>");
                    sbMailContent.Append("<td style='text-align: right'>");
                    sbMailContent.Append(dr[dc.ColumnName]);
                    sbMailContent.Append("</td>");
                    sbMailContent.Append("</tr>");
                    if (dc.ColumnName.Contains("姓名"))
                    {
                        officer = dr[dc.ColumnName].ToString();
                    }
                    if (dc.ColumnName.Contains("邮箱"))
                    {
                        receiver = dr[dc.ColumnName].ToString();
                        if (!pattern.IsMatch(receiver))
                        {
                            Failure fail = new Failure();
                            fail.name     = officer;
                            fail.errorMsg = "wrong email format with name '" + officer + "'";
                            failure.Add(fail);
                            break;
                        }
                    }
                }
                if (string.IsNullOrEmpty(receiver) || string.IsNullOrEmpty(officer))
                {
                    Failure fail = new Failure();
                    fail.name     = officer;
                    fail.errorMsg = "not found email address or chinese name with name '" + officer + "'";
                    failure.Add(fail);
                    continue;
                }
                sbMailContent.Append("</table><p>Br, </p><p>QY-Admin Office<p>");

                //send message to officer
                mailMessage.Body = sbMailContent.ToString();
                mailMessage.To.Add(new MailAddress(receiver));

                try
                {
                    smtpClient.Send(mailMessage);
                }
                catch (Exception ex)
                {
                    Failure fail = new Failure();
                    fail.name     = officer;
                    fail.errorMsg = ex.Message;
                    failure.Add(fail);
                    continue;
                }
                success.Add(officer);
            }
            mr.success = success;
            mr.failure = failure;
            return(mr);
        }