/// <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; } } } }
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); }
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(); } }); } } } }
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); } } } }
/// <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); } }
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); }
/// <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); }
/// <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); } }
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; }
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); }