private async void btnSend_Click(object sender, RoutedEventArgs e) { for (int i = 0; i < 100; i++) { MailBuilder mb = new MailBuilder(); mb.From.Add(new MailBox(txtFrom.Text)); mb.To.Add(new MailBox(txtTo.Text)); mb.Subject = txtSubject.Text; mb.Html = txtBody.Text; if (file != null) { await mb.AddAttachment(file); } IMail mail = mb.Create(); try { Smtp smtp = new Smtp(); await smtp.Connect("smtp.gmail.com", 587); await smtp.UseBestLoginAsync(txtFrom.Text, txtPasscode.Password); await smtp.SendMessageAsync(mail); await smtp.CloseAsync(); } catch (Exception ex) { new MessageDialog(ex.Message).ShowAsync(); //throw; } } await new MessageDialog("Send mail completed").ShowAsync(); }
static void send(string subject, User to) { try { MailBuilder builder = new MailBuilder(); builder.Html = @"Html with an image: <img src=""cid:lena"" />"; builder.Subject = subject; MimeData visual = builder.AddVisual(HostingEnvironment.MapPath("~/Images/logo_2.png")); visual.ContentId = "lena"; MimeData attachment = builder.AddAttachment(@"C:\Users\User\Desktop\Attachment.txt"); attachment.FileName = "document.doc"; builder.From.Add(new MailBox("*****@*****.**")); builder.To.Add(new MailBox(to.Email)); //builder.To.Add(new MailBox("*****@*****.**")); IMail email = builder.Create(); using (Smtp smtp = new Smtp()) { smtp.Connect(_server); // or ConnectSSL for SSL smtp.UseBestLogin(_user, _password); smtp.SendMessage(email); smtp.Close(); } } catch (Exception e) { Console.WriteLine(e.Message); } }
public static void AddAttachment(this MailBuilder builder, IMail messageToAttach) { MimeRfc822 rfc822 = new MimeFactory().CreateMimeRfc822(); rfc822.Data = messageToAttach.Render(); builder.AddAttachment(rfc822); }
private async void btnSend_Click(object sender, RoutedEventArgs e) { MailBuilder myMail = new MailBuilder(); string message = string.Empty; txtMessage.Document.GetText(Windows.UI.Text.TextGetOptions.AdjustCrlf, out message); myMail.Html = message; myMail.Subject = txtSubject.Text; await myMail.AddAttachment(AttachFile); myMail.To.Add(new MailBox(txtTo.Text)); myMail.From.Add(new MailBox(txtFrom.Text)); myMail.Cc.Add(new MailBox(txtCC.Text)); myMail.Bcc.Add(new MailBox(txtBCc.Text)); IMail email = myMail.Create(); using (Smtp smtp = new Smtp()) { await smtp.Connect("smtp.gmail.com", 587); await smtp.UseBestLoginAsync("*****@*****.**", "Osxunix97"); await smtp.SendMessageAsync(email); await smtp.CloseAsync(); await new MessageDialog("mail send success").ShowAsync(); } }
public void SendMessage() { try { XElement element = XElement.Load("MailSettings.xml"); MailBuilder builder = new MailBuilder(); //builder.Subject = String.Format("{0} - {1}", themeTxb.Text, SendMail.MailSettings.SenderName); builder.Subject = themeTxb.Text + " - " + element.Element("GeneralInformation").Element("senderName").Value; //builder.Subject = themeTxb.Text + " - " + SendMail.MailSettings.SenderName; builder.From.Add(new MailBox(element.Element("GeneralInformation").Element("email").Value, element.Element("GeneralInformation").Element("email").Value)); //builder.From.Add(new MailBox(SendMail.MailSettings.Email)); builder.To.Add(new MailBox(whomTxb.Text)); builder.Text = contentTxb.Text; if (attachBtnFlag == true) { foreach (var i in pathFileName) { builder.AddAttachment(i); } } IMail email = builder.Create(); using (Smtp smtp = new Smtp()) { smtp.ConnectSSL(element.Element("SendingMail").Element("sendingMail").Value); //smtp.ConnectSSL(SendMail.MailSettings.SendingMail); smtp.Configuration.EnableChunking = true; smtp.UseBestLogin(element.Element("SendingMail").Element("sendingLogin").Value, element.Element("SendingMail").Element("sendingPassword").Value); //smtp.UseBestLogin(SendMail.MailSettings.SendingLogin, SendMail.MailSettings.SendingPassword); smtp.SendMessage(email); MessageBox.Show("Електронний лист успішно надіслано!"); } using (Imap imap = new Imap()) { imap.ConnectSSL(element.Element("ReceivingMail").Element("receivingMail").Value); //imap.ConnectSSL(SendMail.MailSettings.ReceivingMail); imap.UseBestLogin(element.Element("ReceivingMail").Element("receivingLogin").Value, element.Element("ReceivingMail").Element("receivingPassword").Value); //imap.UseBestLogin(SendMail.MailSettings.ReceivingLogin, SendMail.MailSettings.ReceivingPassword); CommonFolders folders = new CommonFolders(imap.GetFolders()); imap.UploadMessage(folders.Sent, email); imap.Close(); } } catch (IOException ex) { MessageBox.Show(ex.Message); } }
private async void SendBtn_Click(object sender, RoutedEventArgs e) { MailBuilder myMail = new MailBuilder(); myMail.Html = MsgText.Text; myMail.Subject = SubText.Text; await myMail.AddAttachment(AttachFile); myMail.To.Add(new MailBox(ToText.Text)); myMail.From.Add(new MailBox(FromText.Text)); IMail email = myMail.Create(); try { using (Smtp smtp = new Smtp()) { await smtp.Connect("smtp.gmail.com", 587); await smtp.UseBestLoginAsync(USER, PASSWORD); await smtp.SendMessageAsync(email); await smtp.CloseAsync(); MessageDialog msg = new MessageDialog("Mail has been sucessfully sent"); msg.ShowAsync(); } } catch (Exception ex) { MessageDialog msg = new MessageDialog("Error in mail send"); msg.ShowAsync(); } }
private async void btnSend(object sender, RoutedEventArgs e) { MailBuilder myMail = new MailBuilder(); myMail.Html = txtContent.Text; myMail.Subject = txtSubject.Text; await myMail.AddAttachment(AttachFile); myMail.To.Add(new MailBox(txtTo.Text)); myMail.From.Add(new MailBox(MainPage.email)); IMail email = myMail.Create(); try { using (Smtp smtp = new Smtp()) { await smtp.Connect("smtp.gmail.com", 587); await smtp.UseBestLoginAsync(MainPage.email, MainPage.password); await smtp.SendMessageAsync(email); await smtp.CloseAsync(); MessageDialog msg = new MessageDialog("Mail has been sucessfully sent"); msg.ShowAsync(); } } catch (Exception ex) { MessageDialog msg = new MessageDialog("Can not send mail! " + ex.Message); msg.ShowAsync(); } }
static void SendMaxKillerPrize(CrosscrowdInfoEntity crowdInfo) { var entity = CrosscrowdMaxkillerrecordMgr.GetMaxKiller(crowdInfo.Idx); if (entity != null && entity.Status == 0) { try { var mail = new MailBuilder(entity.ManagerId, EnumMailType.CrowdMaxKiller); mail.AddAttachment(1, _maxKillerPrizeItem, false, 0); mail.Save(entity.SiteId); entity.Status = 1; entity.PrizeItems = _maxKillerPrizeItem.ToString(); CrosscrowdMaxkillerrecordMgr.Update(entity); } catch (Exception ex) { SystemlogMgr.Error("CrossCrowd-SendMaxKillerPrize", ex); } } }
/// <summary> /// Build email from MailBuilder using interface IMail, pass to SendMail() /// </summary> /// <param name="sendTo">Recipient</param> /// <param name="sendSubject">Subject</param> /// <param name="sendMailContents">Body</param> /// <param name="sendFrom">Sender</param> public void ProcessMailToSend(string sendTo, string sendSubject, string sendMailContents, string sendFrom) { // Append scalemail signature sendMailContents += "<br/>Sent using <img src=\"http://i42.photobucket.com/albums/e333/rcastoro1/scalemailSignature_zpse308b52b.gif \" border=\"0\" alt=\" photo scalemailSignature_zpse308b52b.gif\"/> v1.0 ^-^"; MailBuilder builder = new MailBuilder(); builder.From.Add(new MailBox(sendFrom, "")); builder.To.Add(new MailBox(sendTo, "")); builder.Subject = sendSubject; builder.Html = sendMailContents; foreach (string attachment in _attachmentList) { MimeData attach = builder.AddAttachment(attachment); } IMail email = builder.Create(); SendMail(email); }
public static IMail MapToIMail(Email message) { var builder = new MailBuilder(); ProcessEmailAddresses(builder, message.EmailAddresses); builder.Subject = message.Subject; builder.Text = message.PlainTextBody; builder.PriorityHigh(); if (!string.IsNullOrEmpty(message.HtmlBody)) builder.Html = message.HtmlBody; foreach (var ea in message.Attachments) { var attachment = builder.AddAttachment(ea.ByteArray); attachment.FileName = ea.AttachmentName; attachment.ContentType = ContentType.Parse(ea.MimeType); } return builder.Create(); }
private void AddMessageToDrafts(string to, string subject, string rtf) { MailBuilder mailBuilder = new MailBuilder(); try { mailBuilder.From.Add(new MailBox(this.EmailBox.EmailAddress)); } catch (Exception) { return; } mailBuilder.To.Add(new MailBox(to)); mailBuilder.Subject = subject; mailBuilder.Rtf = rtf; for (int i = 0; i < this.Attachments.Count; i++) { MimeData mime = mailBuilder.AddAttachment(this.Attachments[i]); mime.FileName = (string)this.attachmentsListBox.Items[i]; } this.EmailBox.UploadMessageToDrafts(mailBuilder.Create()); }
static MessageCode BuildPrizeMail(CrosscrowdInfoEntity crowd, MailBuilder mail, EnumCrowdPrizeCategory category, int categorySub, int maxPoint, int maxLegendCount, ref string prizeItemString) { try {//11 天梯奖励 12击杀奖励 var prizes = CacheFactory.CrowdCache.GetRankPrizes(category, categorySub); if (prizes != null) { //1 金币 //2 卡库 卡库id //3 物品 物品code //4 非彩色球魂 //5 点券 //7 绑定点卷 var itemCode = 0; foreach (var entity in prizes) { if (!RandomHelper.CheckPercentage(entity.Rate)) { continue; } switch (entity.Type) { case 1: mail.AddAttachment(EnumCurrencyType.Coin, entity.Count); prizeItemString += string.Format("1Coin:{0}|", entity.Count); break; case 2: itemCode = CacheFactory.LotteryCache.LotteryByLib(entity.SubType); if (itemCode > 0) { mail.AddAttachment(entity.Count, itemCode, entity.IsBinding, entity.Strength); prizeItemString += string.Format("2Item-C:{0},I:{1},B:{2},S:{3}|", entity.Count, itemCode, entity.IsBinding, entity.Strength); } break; case 3: if (maxLegendCount != -1 && entity.SubType == 310165) { if (crowd.PrizeLegendCount < maxLegendCount) { BuildPrizeMailItem(mail, entity, "3Item", ref prizeItemString); crowd.PrizeLegendCount++; } } else { BuildPrizeMailItem(mail, entity, "3Item", ref prizeItemString); } break; case 4: itemCode = CacheFactory.ItemsdicCache.RandomBallsoulOthercolorForWCH(); if (itemCode > 0) { mail.AddAttachment(entity.Count, itemCode, entity.IsBinding, entity.Strength); prizeItemString += string.Format("4Item-C:{0},I:{1},B:{2},S:{3}|", entity.Count, itemCode, entity.IsBinding, entity.Strength); } break; case 5: var totalPrizePoint = crowd.PrizePoint; if (category == EnumCrowdPrizeCategory.CrossRank) { int point = RandomHelper.GetInt32(entity.Min, entity.Max); if (point > 0) { mail.AddAttachment(EnumCurrencyType.Point, point); prizeItemString += string.Format("5Point:{0}|", point); } } else if (maxPoint == -1 || totalPrizePoint < maxPoint) { int point = RandomHelper.GetInt32(entity.Min, entity.Max); totalPrizePoint += point; if (totalPrizePoint > maxPoint) { point = maxPoint - crowd.PrizePoint; totalPrizePoint = maxPoint; } if (maxPoint != -1) { crowd.PrizePoint = totalPrizePoint; } if (point > 0) { mail.AddAttachment(EnumCurrencyType.Point, point); prizeItemString += string.Format("5Point:{0}|", point); } } break; case 6: int prizeCount = 0; if (RandomHelper.CheckPercentage(entity.Min)) { prizeCount = RandomHelper.GetInt32(21, 30); } else if (RandomHelper.CheckPercentage(entity.Max)) { prizeCount = RandomHelper.GetInt32(16, 20); } else { prizeCount = RandomHelper.GetInt32(6, 15); } //var prizeCount = RandomHelper.GetInt32(entity.Min, entity.Max); mail.AddAttachment(prizeCount, entity.SubType, entity.IsBinding, entity.Strength); prizeItemString += string.Format("3Item-C:{0},I:{1},B:{2},S:{3}|", prizeCount, entity.SubType, entity.IsBinding, entity.Strength); break; case 7: var totalBindPoint = crowd.PrizePoint; if (category == EnumCrowdPrizeCategory.CrossRank) { int point = RandomHelper.GetInt32(entity.Min, entity.Max); if (point > 0) { mail.AddAttachment(EnumCurrencyType.BindPoint, point); prizeItemString += string.Format("8Point:{0}|", point); } } else if (maxPoint == -1 || totalBindPoint < maxPoint) { int point = RandomHelper.GetInt32(entity.Min, entity.Max); totalBindPoint += point; if (totalBindPoint > maxPoint) { point = maxPoint - crowd.PrizePoint; totalBindPoint = maxPoint; } if (maxPoint != -1) { crowd.PrizePoint = totalBindPoint; } if (point > 0) { mail.AddAttachment(EnumCurrencyType.BindPoint, point); prizeItemString += string.Format("8Point:{0}|", point); } } break; } } if (category == EnumCrowdPrizeCategory.CrossKill) { if (isKillDouble) { mail.AddAttachment(1, 310154, false, 1); prizeItemString += string.Format("3Item-C:{0},I:{1},B:{2},S:{3}|", 1, 310154, false, 1); } } prizeItemString = prizeItemString.TrimEnd('|'); } } catch (Exception ex) { return(MessageCode.NbParameterError); } return(MessageCode.Success); }
private void sendMail(Message _message) { if (_message == null) { return; } if (string.IsNullOrWhiteSpace(Settings.Default.MailOutput_Server)) { return; } Logger.WriteDebug(MethodBase.GetCurrentMethod(), "Start to send mail"); //Check settings if (Settings.Default.MailOutput_Port <= 0) { throw new ArgumentNullException("MailOutput_Port"); } if (string.IsNullOrWhiteSpace(Settings.Default.MailOutput_Sender)) { throw new ArgumentNullException("MailOutput_Sender"); } if (string.IsNullOrWhiteSpace(Settings.Default.MailOutput_User)) { throw new ArgumentNullException("MailOutput_User"); } if (string.IsNullOrWhiteSpace(Settings.Default.MailOutput_Password)) { throw new ArgumentNullException("MailOutput_Password"); } //Settings var _senderMailbox = new MailBox(Settings.Default.MailOutput_Sender, "Rescue-Information-System"); var _mailBuilder = new MailBuilder(); _mailBuilder.From.Add(_senderMailbox); _mailBuilder.Subject = _message.Subject; _mailBuilder.Text = _message.Text; //Werbung for (var i = 0; i < 5; i++) { _mailBuilder.Text += Environment.NewLine; } _mailBuilder.Text += "RIS by www.srs-software.de"; //Empfänger hinzufügen foreach (var _user in _message.Recivers) { if (!isValidEmail(_user.MailAdresse)) { Logger.WriteDebug(MethodBase.GetCurrentMethod(), $"User {_user.Name} -> mail address not valid"); continue; } var _newAdress = new MailBox(_user.MailAdresse, _user.Name); _mailBuilder.Bcc.Add(_newAdress); Logger.WriteDebug(MethodBase.GetCurrentMethod(), $"User add ({_user.Name})"); } if (_mailBuilder.Bcc.Count <= 0) { Logger.WriteDebug(MethodBase.GetCurrentMethod(), "cancel no recipients"); return; } //Anhang if (!string.IsNullOrEmpty(_message.AttachmentPath)) { if (File.Exists(_message.AttachmentPath) && WaitFileReady.Check(_message.AttachmentPath)) { _mailBuilder.AddAttachment(_message.AttachmentPath); } else { Logger.WriteDebug(MethodBase.GetCurrentMethod(), $"{_message.AttachmentPath} -> not found"); } } //send mail Logger.WriteDebug(MethodBase.GetCurrentMethod(), "start sending"); using (var _smtpClient = new Smtp()) { if (Settings.Default.MailOutput_SSL) { _smtpClient.ConnectSSL(Settings.Default.MailOutput_Server, Settings.Default.MailOutput_Port); } else { _smtpClient.Connect(Settings.Default.MailOutput_Server, Settings.Default.MailOutput_Port); if (_smtpClient.SupportedExtensions().Contains(SmtpExtension.StartTLS)) { _smtpClient.StartTLS(); } } _smtpClient.UseBestLogin(Settings.Default.MailOutput_User, Encrypt.DecryptString(Settings.Default.MailOutput_Password, "MailOutput_Password")); Logger.WriteDebug(MethodBase.GetCurrentMethod(), "login -> ok"); var _mail = _mailBuilder.Create(); _mail.PriorityHigh(); var _result = _smtpClient.SendMessage(_mail); Logger.WriteDebug(MethodBase.GetCurrentMethod(), $"result -> {_result}"); _smtpClient.Close(); } Logger.WriteDebug(MethodBase.GetCurrentMethod(), "send mail finished"); }
protected void btnSend_Click(object sender, EventArgs e) { try { var zoneId = ZoneId; if (string.IsNullOrEmpty(zoneId)) { ShowMessage("请选择区"); return; } var users = txtUserList.Text; if (string.IsNullOrEmpty(users)) { ShowMessage("请选择用户"); return; } var title = txtMailTitle.Text; if (string.IsNullOrEmpty(title)) { ShowMessage("请输入标题"); return; } var content = txtMailContent.Text; if (string.IsNullOrEmpty(content)) { ShowMessage("请输入内容"); return; } List <NbManagerEntity> managers = new List <NbManagerEntity>(); var ss = users.Split(','); foreach (var s in ss) { var manager = NbManagerMgr.GetByAccount(s, zoneId); if (manager == null || manager.Count < 1) { ShowMessage("未找到对应经理,账号:" + s); return; } managers.Add(manager[0]); } var mailType = ConvertHelper.ConvertToInt(dr_type.SelectedValue); var attachments = GetAttachments(); if (mailType == 1) { MailBuilder mail = new MailBuilder(title, content); if (attachments.Count > 0) { foreach (var entity in attachments) { switch (entity.Type) { case 1: mail.AddAttachment(EnumCurrencyType.Coin, entity.Count); break; case 2: mail.AddAttachment(EnumCurrencyType.Point, entity.Count); break; case 3: mail.AddAttachment(entity.Count, entity.ItemCode, entity.IsBinding, entity.Strength); break; case 4: //声望 mail.AddAttachment(EnumCurrencyType.Prestige, entity.Count); break; case 8: //绑劵 mail.AddAttachment(EnumCurrencyType.BindPoint, entity.Count); break; } } } List <MailInfoEntity> mailList = new List <MailInfoEntity>(managers.Count); var mailInfo = mail.MailInfo; foreach (var entity in managers) { var mailEntity = mailInfo.Clone(); mailEntity.ManagerId = entity.Idx; mailList.Add(mailEntity); } var mailTable = MailCore.BuildMailBulkTable(mailList); if (MailSqlHelper.SaveMailBulk(mailTable, ConnectionFactory.Instance.GetConnectionString(zoneId, "Main"))) { ShowMessage("发送成功"); datagrid1.DataSource = null; datagrid1.DataBind(); LocalAttachment = null; } else { ShowMessage("发送失败"); } } else if (mailType == 2) { //{ // MailShareBuilder mail = new MailShareBuilder(title, content); // if (attachments.Count > 0) // { // foreach (var entity in attachments) // { // switch (entity.Type) // { // case 1: // mail.AddAttachment(EnumCurrencyType.Coin, entity.Count); // break; // case 2: // mail.AddAttachment(EnumCurrencyType.Point, entity.Count); // break; // case 3: // mail.AddAttachment(entity.Count, entity.ItemCode, entity.IsBinding, entity.Strength); // break; // case 4://声望 // mail.AddAttachment(EnumCurrencyType.Prestige, entity.Count); // break; // case 8://绑劵 // mail.AddAttachment(EnumCurrencyType.BindPoint, entity.Count); // break; // } // } // } // MailshareInfoEntity mailList = new MailshareInfoEntity(); // var mailInfo = mail.MailInfo; // if (managers.Count > 1) // { // ShowMessage("只支持单个发送"); // return; // } // foreach (var entity in managers) // { // var mailEntity = mailInfo.Clone(); // mailEntity.Account = entity.Account; // } // if (mail.Save(zoneId)) // { // ShowMessage("发送成功"); // datagrid1.DataSource = null; // datagrid1.DataBind(); // LocalAttachment = null; // } // else // { // ShowMessage("发送失败"); // } //} ShowMessage("请选择邮件类型"); } } catch (Exception ex) { LogHelper.Insert(ex); ShowMessage("发送失败:" + ex.Message); } }
protected void btnSendMail_Click(object sender, EventArgs e) { try { string notSendString = ""; string sendString = txt_SendString.Text; string mailName = txt_MailName.Text; string info = txt_mailInfo.Text; if (sendString.Trim().Length == 0 || mailName.Trim().Length <= 0 || info.Trim().Length <= 0) { ShowMessage("请输入串"); return; } var malls = sendString.Split('|'); List <LocalMailManagerCorssEntity> managers = new List <LocalMailManagerCorssEntity>(); foreach (var s in malls) { var sss = s.Split(','); var manager = NbManagerMgr.GetByAccount(sss[1], sss[0]); if (manager == null || manager.Count < 1) { ShowMessage("未找到对应经理,账号:" + s); return; } managers.Add(new LocalMailManagerCorssEntity() { ManagerId = manager[0].Idx, ZoneId = sss[0], Account = sss[1], Point = ConvertHelper.ConvertToInt(sss[2]) }); } MailBuilder mail = null; foreach (var item in managers) { try { if (item.Point <= 0) { continue; } mail = new MailBuilder(mailName, info); //mail = new MailBuilder(item.ManagerId, mailName); mail.AddAttachment(EnumCurrencyType.Point, item.Point); var mailInfo = mail.MailInfo; var mailEntity = mailInfo.Clone(); mailEntity.ManagerId = item.ManagerId; if (!MailInfoMgr.Insert(mailEntity, null, item.ZoneId)) { notSendString += item.ZoneId + "," + item.Account + "," + item.Point + "|"; LogHelper.Insert(item.ZoneId + "," + item.Account + "," + item.Point + "-----失败", LogType.Info); } else { LogHelper.Insert(item.ZoneId + "," + item.Account + "," + item.Point + "-----成功", LogType.Info); } } catch (Exception ex) { notSendString += item.ZoneId + "," + item.Account + "," + item.Point + "|"; LogHelper.Insert(item.ZoneId + "," + item.Account + "," + item.Point + "-----失败", LogType.Info); } } if (notSendString.Trim().Length > 0) { ShowMessage("未成功发送的串:" + notSendString); } else { ShowMessage("发送成功"); } } catch (Exception ex) { LogHelper.Insert(ex); ShowMessage("发送失败:" + ex.Message); } }
public byte[] Send(MailMessage message, bool returnBlob = false, bool needDispositionNotification = false, StandardMailAddress notificationTo = null) { // Gestore dei messaggi MailBuilder builder = new MailBuilder { MessageID = Guid.NewGuid().ToString(), Subject = message.Subject }; // Creo il messaggio base builder.From.Add(new MailBox(message.From.Address, message.From.DisplayName)); builder.Text = message.Body; builder.Html = message.Body.Replace(Environment.NewLine, "<br />"); // Carico i destinatari A foreach (var recipient in message.To) { builder.To.Add(new MailBox(recipient.Address, recipient.DisplayName)); } // Carico i destinatari CC foreach (var recipient in message.CC) { builder.Cc.Add(new MailBox(recipient.Address, recipient.DisplayName)); } //Specifico se notificare al mittente la notifiche di lettura e ricezione if (needDispositionNotification && notificationTo != null) { MailBox originalSender = new MailBox(notificationTo.Address, notificationTo.DisplayName); builder.RequestReadReceipt(); builder.NotificationTo.Clear(); builder.ReplyTo.Clear(); builder.ReturnReceiptTo.Clear(); builder.NotificationTo.Add(originalSender); builder.ReturnReceiptTo.Add(originalSender); } // Carico gli allegati foreach (var attachment in message.Attachments) { var mime = new MimeFactory().CreateMimeData(); using (var ms = new MemoryStream()) { attachment.ContentStream.CopyTo(ms); mime.Data = ms.ToArray(); } mime.ContentType = ContentType.Parse(attachment.Name.GetMimeType()); mime.FileName = attachment.Name; builder.AddAttachment(mime); } // Priorità switch (message.Priority) { case MailPriority.Low: builder.Priority = MimePriority.NonUrgent; break; case MailPriority.Normal: builder.Priority = MimePriority.Normal; break; case MailPriority.High: builder.Priority = MimePriority.Urgent; break; } // Genero la mail da spedire var email = builder.Create(); var sent = false; var i = 0; Exception lastException = null; while (!sent && i < 5) { using (var smtp = new Smtp()) { // Accetto anche i certificati non validi smtp.ServerCertificateValidate += ServerCertificateValidateCallBack; // Connessione al server smtp.Connect(_server, _port, AuthenticationType == MailClient.AuthenticationType.Ssl); // Attivazione Tls, se richiesta if (AuthenticationType == MailClient.AuthenticationType.Tls) { smtp.StartTLS(); } // Login, se necessario if (!UseDefaultCredentials) { smtp.UseBestLogin(Credentials.UserName, Credentials.Password); } // Imposto il timeout per la richiesta smtp.SendTimeout = new TimeSpan(0, 0, 0, 0, Timeout); // Invio e calcolo il risultato var messageResult = smtp.SendMessage(email); sent = (messageResult.Status == SendMessageStatus.Success); try { smtp.Close(true); } catch (Exception ex) { lastException = ex; } } if (!sent) { Thread.Sleep(1000 * 30); continue; } i++; } if (returnBlob && email != null) { byte[] eml = email.Render(); return(eml); } if (!sent && lastException != null) { throw new Exception("Impossibile inviare il messaggio dopo 5 tentativi.", lastException); } return(null); }
protected void btnSend_Click(object sender, EventArgs e) { try { var users = txtUserList.Text; if (string.IsNullOrEmpty(users)) { ShowMessage("请选择用户"); return; } var title = txtMailTitle.Text; if (string.IsNullOrEmpty(title)) { ShowMessage("请输入标题"); return; } var content = txtMailContent.Text; if (string.IsNullOrEmpty(content)) { ShowMessage("请输入内容"); return; } List <LocalMailManagerCorssEntity> managers = new List <LocalMailManagerCorssEntity>(); var ss = users.Split('|'); foreach (var s in ss) { var sss = s.Split(','); var manager = NbManagerMgr.GetByAccount(sss[1], sss[0]); if (manager == null || manager.Count < 1) { ShowMessage("未找到对应经理,账号:" + s); return; } managers.Add(new LocalMailManagerCorssEntity() { ManagerId = manager[0].Idx, ZoneId = sss[0], Account = sss[1] }); } MailBuilder mail = new MailBuilder(title, content); var attachments = GetAttachments(); if (attachments.Count > 0) { foreach (var entity in attachments) { switch (entity.Type) { case 1: mail.AddAttachment(EnumCurrencyType.Coin, entity.Count); break; case 2: mail.AddAttachment(EnumCurrencyType.Point, entity.Count); break; case 3: mail.AddAttachment(entity.Count, entity.ItemCode, entity.IsBinding, entity.Strength); break; case 4: //声望 mail.AddAttachment(EnumCurrencyType.Prestige, entity.Count); break; case 8: //绑劵 mail.AddAttachment(EnumCurrencyType.BindPoint, entity.Count); break; } } } var mailInfo = mail.MailInfo; string failList = ""; foreach (var entity in managers) { try { var mailEntity = mailInfo.Clone(); mailEntity.ManagerId = entity.ManagerId; MailInfoMgr.Insert(mailEntity, null, entity.ZoneId); } catch (Exception ex) { LogHelper.Insert(ex); failList = string.Format("{0}{1},{2}|", failList, entity.ZoneId, entity.Account); } } if (!string.IsNullOrEmpty(failList)) { ShowMessage("部分发送失败,列表:" + failList.TrimEnd('|')); } else { ShowMessage("发送成功"); } datagrid1.DataSource = null; datagrid1.DataBind(); LocalAttachment = null; } catch (Exception ex) { LogHelper.Insert(ex); ShowMessage("发送失败:" + ex.Message); } }
/// <summary> Spedisce l'email. </summary> /// <param name="mailbox"> MailBox da dove spedire l'email. </param> /// <param name="email"> Email da spedire. </param> /// <param name="pecMail"> PEC da inviare </param> /// <param name="guid"> Guid della mail</param> public bool SendMail(PECMailBox mailbox, IMail email, PECMail pecMail, Guid guid, string password) { // In caso di modalità DEBUG modifico i destinatari con quello di default: if (_parameters.DebugModeEnabled) { // Creo una nuova mail alla quale aggiungo come allegato la mail originale MailBuilder debugBuilder = new MailBuilder(); debugBuilder.From.Add(email.From.First()); debugBuilder.Subject = string.Format("Inoltro messaggio per DEBUG -> {0}", email.Subject); // Crea il corpo del messaggio di default (non è richiesto dall'Interoperabilità) o lo legge da base dati, se indicato debugBuilder.Text = "In allegato la mail che sarebbe stata spedita."; // Aggiungo il destinatario di debug debugBuilder.To.Add(new MailBox(_parameters.PecOutAddressDebugMode, "DEBUG ADDRESS")); // Aggiungo la mail come allegatos debugBuilder.AddAttachment(email); // Sostituisco item con il debugMail email = debugBuilder.Create(); FileLogger.Info(_loggerName, string.Format("Modificato l'indirizzo di invio della PEC con l'indirizzo {0}.", _parameters.PecOutAddressDebugMode)); } // Eseguo in modo atomico il blocco di invio int i = 0; bool sent = false; ISendMessageResult sendResult = null; Exception lastException = null; while (!sent && i < 5) { try { using (Smtp smtp = new Smtp()) { smtp.ServerCertificateValidate += ServerCertificateValidateHandler; // Utilizzo connessione SSL if (mailbox.OutgoingServerUseSsl.HasValue && mailbox.OutgoingServerUseSsl.Value) { smtp.SSLConfiguration.EnabledSslProtocols = System.Security.Authentication.SslProtocols.Tls12; smtp.ConnectSSL(mailbox.OutgoingServerName, mailbox.OutgoingServerPort.HasValue ? mailbox.OutgoingServerPort.Value : 465); } else { smtp.Connect(mailbox.OutgoingServerName, mailbox.OutgoingServerPort.HasValue ? mailbox.OutgoingServerPort.Value : 25); } // Utilizzo autenticazione if (!string.IsNullOrEmpty(mailbox.Username) && !string.IsNullOrEmpty(password)) { smtp.UseBestLogin(mailbox.Username, password); } sendResult = smtp.SendMessage(email); sent = (sendResult.Status == SendMessageStatus.Success); if (!sent) { string errors = string.Empty; if (sendResult.GeneralErrors != null && sendResult.GeneralErrors.Any()) { errors = string.Join(", ", sendResult.GeneralErrors .Select(f => string.Concat("Code: ", f.Code, " - EnhancedStatusCode: ", f.EnhancedStatusCode, " - Message: ", f.Message, " - Status : ", f.Status))); } FileLogger.Error(_loggerName, string.Format("Errore in spedizione PEC {0} / casella {1} - {2}. Stato spedizione: {3} - Errori:{4}.", pecMail.Id, mailbox.Id, mailbox.MailBoxName, sendResult.Status, errors)); } smtp.Close(false); } if (!sent) { continue; } // Aggiorno immediatamente la PEC come spedita in modo da non avere dubbi che la PEC sia stata davvero spedita pecMail.MailDate = DateTime.Now; pecMail.XRiferimentoMessageID = string.Format("<{0}>", guid); _factory.PECMailFacade.UpdateOnly(ref pecMail); Protocol currentProtocol = _factory.PECMailFacade.GetProtocol(pecMail); if (currentProtocol != null && (short)ProtocolKind.FatturePA == currentProtocol.IdProtocolKind) { currentProtocol.IdStatus = (int)ProtocolStatusId.PAInvoiceSent; _factory.ProtocolFacade.UpdateOnly(ref currentProtocol); } } catch (Exception ex) { lastException = ex; // Se mi trovo in questo status è avvenuto un errore in fase di spedizione, per cui posso riprocedere ad inviare FileLogger.Error(_loggerName, string.Format("Non è stato possibile inviare la PEC {0} / casella {1} - {2} per un probabile errore di rete o di server PEC. La procedura verrà ritentata. - Tentativo {3}/5", pecMail.Id, mailbox.Id, mailbox.MailBoxName, i + 1), ex); // Attendo 1 minuto prima di riprovare #if !DEBUG Thread.Sleep(1000 * 30); #endif } finally { // Procedo i++; } } // Se dopo 5 tentativi ancora non ha ricevuto conferma di spedizione allora invio una mail e blocco l'invio if (sent) { _factory.PECMailboxLogFacade.SentMail(ref pecMail); return(true); } // Errori String errorMessages = string.Format("Errori di invio:{0}", Environment.NewLine); errorMessages = sendResult.GeneralErrors.Aggregate(errorMessages, (current, generalError) => current + string.Format("Code:{1} - Message:{2} - Status:{3}{0}", Environment.NewLine, generalError.Code, generalError.Message, generalError.Status)); _factory.PECMailboxLogFacade.SentErrorMail(ref pecMail, new Exception(errorMessages)); pecMail.IsActive = ActiveType.Cast(ActiveType.PECMailActiveType.Error); _factory.PECMailFacade.UpdateOnly(ref pecMail); String errorResult = string.Format("La PEC {0} / casella {1} - {2} non è stata spedita dopo 5 tentativi falliti. \nE' stata pertanto disattivata (isActive = 255) per evitare ulteriori tentativi.", pecMail.Id, mailbox.Id, mailbox.MailBoxName); _factory.PECMailLogFacade.Error(ref pecMail, errorResult); _factory.PECMailLogFacade.Error(ref pecMail, string.Concat(errorResult, errorMessages)); MailStoreFacade.SetPECMailTaskError(pecMail); throw new Exception(errorResult, lastException); }
private IMail GetMailMessage(Guid guid, PECMail pecMail) { MailBuilder builder = new MailBuilder(); foreach (MailBox mailBox in MailStringToList(pecMail.MailSenders)) { builder.From.Add(mailBox); } foreach (MailBox mailBox in MailStringToList(pecMail.MailRecipients)) { builder.To.Add(mailBox); } foreach (MailBox mailBox in MailStringToList(pecMail.MailRecipientsCc)) { builder.Cc.Add(mailBox); } builder.Subject = string.IsNullOrEmpty(pecMail.MailSubject) ? string.Empty : StringHelper.ReplaceCrLf(pecMail.MailSubject); // Crea il corpo del messaggio di default (non è richiesto dall'Interoperabilità) o lo legge da base dati, se indicato builder.Text = (string.IsNullOrEmpty(pecMail.MailBody)) ? string.Format("Invio protocollo \"{0}\" ({1}/{2})", pecMail.MailSubject, pecMail.Number, pecMail.Year) : pecMail.MailBody; builder.MessageID = guid.ToString(); if (!string.IsNullOrEmpty(pecMail.Segnatura)) { // Estrae la segnatura dalla base dati e la allega alla mail in uscita MimeData xmlSegnatura = builder.AddAttachment(Encoding.GetEncoding(1252).GetBytes(pecMail.Segnatura)); xmlSegnatura.ContentType = new ContentType(MimeType.Text, MimeSubtype.Xml); xmlSegnatura.ContentId = "Segnatura.xml"; xmlSegnatura.FileName = "Segnatura.xml"; } // Estrae i relativi allegati da base dati (documento ed allegati) if ((pecMail.Attachments != null) && (pecMail.Attachments.Count > 0)) { byte[] attachmentByteArray; foreach (PECMailAttachment attachment in pecMail.Attachments) { try { attachmentByteArray = null; string attachmentName = FileHelper.ReplaceUnicode(FileHelper.ConvertUnicodeToAscii(attachment.AttachmentName)); if (pecMail.Location != null && !string.IsNullOrEmpty(pecMail.Location.DocumentServer) && attachment.IDDocument != Guid.Empty) { // Allora utilizzo l'idDocument BiblosDocumentInfo doc = new BiblosDocumentInfo(pecMail.Location.DocumentServer, attachment.IDDocument); attachmentByteArray = doc.Stream; FileLogger.Debug(_loggerName, string.Format("Caricamento allegato {0} della PEC {1} inserito da DSW8 utilizzando l'IDDocument", attachmentName, pecMail.Id)); } else { throw new Exception("L'allegato non contiene nè un idBiblos valido nè uno stream valido e pertanto non può essere inviato."); } MimeData document = builder.AddAttachment(attachmentByteArray); if (attachmentName.EndsWith(FileHelper.EML, StringComparison.InvariantCultureIgnoreCase)) { document.ContentType = new ContentType(MimeType.Message, MimeSubtype.Rfc822); } else { document.ContentType = new ContentType(MimeType.Application, MimeSubtype.OctetStream); } document.ContentId = attachmentName; document.FileName = attachmentName; } catch (Exception ex) { FileLogger.Error(_loggerName, string.Format("Errore in aggiunta allegati alla PECMail [{0}].", pecMail.Id), ex); } } } // Estrae il messaggio di ritorno dalla base dati, se presente e lo allega alla mail in uscita if (pecMail.MessaggioRitornoName != null && pecMail.MessaggioRitornoStream != null) { MimeData messaggioRitornoStream = builder.AddAttachment(Encoding.GetEncoding(1252).GetBytes(pecMail.MessaggioRitornoStream)); messaggioRitornoStream.ContentType = new ContentType(MimeType.Text, MimeSubtype.Xml); messaggioRitornoStream.ContentId = pecMail.MessaggioRitornoStream; messaggioRitornoStream.FileName = pecMail.MessaggioRitornoStream; } if (pecMail.MailPriority.HasValue) { switch (pecMail.MailPriority) { case -1: builder.Priority = MimePriority.NonUrgent; break; case 1: builder.Priority = MimePriority.Urgent; break; default: builder.Priority = MimePriority.Normal; break; } } else { builder.Priority = MimePriority.Normal; } return(builder.Create()); }
static void BuildPrizeMailItem(MailBuilder mail, ConfigCrowdrankprizeEntity entity, string title, ref string prizeItemString) { mail.AddAttachment(entity.Count, entity.SubType, entity.IsBinding, entity.Strength); prizeItemString += string.Format("{4}-C:{0},I:{1},B:{2},S:{3}|", entity.Count, entity.SubType, entity.IsBinding, entity.Strength, title); }
private void SendButton_Click(object sender, RoutedEventArgs e) { if (this.encryptMessage.IsChecked == true && this.EmailBox.XmlStringChipherKeyContainerName is null) { MessageBox.Show("Для шифрования сообщения следует импортировать открытый ключ!", "Ошибка", MessageBoxButton.OK, MessageBoxImage.Error); return; } if (this.toTextBox.Text is null) { MessageBox.Show("Требуется ввести имя получателя.", "Ошибка", MessageBoxButton.OK, MessageBoxImage.Error); return; } MailBuilder mailBuilder = new MailBuilder(); mailBuilder.From.Add(new MailBox(this.EmailBox.EmailAddress)); try { mailBuilder.To.Add(new MailBox(this.toTextBox.Text.Trim(' '))); } catch (ArgumentException) { MessageBox.Show("Имя получателя написано в неверном формате.", "Ошибка", MessageBoxButton.OK, MessageBoxImage.Error); return; } mailBuilder.Subject = this.subjectTextBox.Text.Trim(' '); if (encryptMessage.IsChecked == true) { byte[] data = this.GetBytesFromRichTextBoxText(this.textRichTextBox); byte[] encData = Encrypter.EncryptWithAesAndRsa(data, this.EmailBox.XmlStringChipherKeyContainerName, true); byte[] signedData = Encrypter.SignData(encData, this.EmailBox.UserKeyContainerName); mailBuilder.Rtf = Convert.ToBase64String(signedData); } else { mailBuilder.Rtf = this.GetTextFromRichTextBox(this.textRichTextBox); } for (int i = 0; i < this.Attachments.Count; i++) { if (encryptMessage.IsChecked == true) { byte[] data = this.Attachments[i]; byte[] encData = Encrypter.EncryptWithAesAndRsa(data, this.EmailBox.XmlStringChipherKeyContainerName, true); byte[] signedData = Encrypter.SignData(encData, this.EmailBox.UserKeyContainerName); MimeData mime = mailBuilder.AddAttachment(signedData); mime.FileName = (string)this.attachmentsListBox.Items[i]; } else { MimeData mime = mailBuilder.AddAttachment(this.Attachments[i]); mime.FileName = (string)this.attachmentsListBox.Items[i]; } } IMail mail = mailBuilder.Create(); if (sendThread != null && sendThread.IsAlive) { sendThread.Abort(); sendThread.Join(); } sendThread = new Thread(() => { this.Dispatcher.Invoke(() => { this.sendButton.IsEnabled = false; Mouse.OverrideCursor = Cursors.AppStarting; }); this.EmailBox.Smtp.SendMessage(mail); this.Dispatcher.Invoke(() => { this.Close(); this.sendButton.IsEnabled = true; Mouse.OverrideCursor = null; }); }); sendThread.Start(); }
private MessageCode SendPrize(PenaltykickSeasonEntity seasonInfo) { if (seasonInfo.Idx == 0) { return(MessageCode.Success); } PenaltykickManagerMgr.SetRank(); var prizeList = PenaltykickManagerMgr.GetNotPrize(seasonInfo.Idx); seasonInfo.IsPrize = true; seasonInfo.PrizeTime = DateTime.Now; foreach (var item in prizeList) { if (item.IsPrize || item.TotalScore < 500) { continue; } item.IsPrize = true; //排名奖励 var prize = CacheFactory.AdCache.GetPrize(3, item.Rank); if (prize == null || prize.Count == 0) { continue; } //邮件 var mail = new MailBuilder(item.Rank, item.ManagerId); foreach (var p in prize) { switch (p.ItemType) { case 3: //暂时只有物品奖励 mail.AddAttachment(p.ItemCount, p.ItemCode, false, 1); break; case 10: //金条 mail.AddAttachment(EnumCurrencyType.GoldBar, p.ItemCount); break; } } using (var transactionManager = new TransactionManager(Dal.ConnectionFactory.Instance.GetDefault())) { transactionManager.BeginTransaction(); var messageCode = MessageCode.NbUpdateFail; do { if (!PenaltykickManagerMgr.Update(item, transactionManager.TransactionObject)) { break; } if (!mail.Save(transactionManager.TransactionObject)) { break; } messageCode = MessageCode.Success; } while (false); if (messageCode != MessageCode.Success) { transactionManager.Rollback(); } transactionManager.Commit(); } } PenaltykickSeasonMgr.Update(seasonInfo); return(MessageCode.Success); }