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();
        }
示例#2
0
        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);
            }
        }
示例#3
0
        public static void AddAttachment(this MailBuilder builder, IMail messageToAttach)
        {
            MimeRfc822 rfc822 = new MimeFactory().CreateMimeRfc822();

            rfc822.Data = messageToAttach.Render();
            builder.AddAttachment(rfc822);
        }
示例#4
0
        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();
            }
        }
示例#5
0
        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();
            }
        }
示例#7
0
        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();
            }
        }
示例#8
0
        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);
                }
            }
        }
示例#9
0
        /// <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();
        }
示例#11
0
        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());
        }
示例#12
0
        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);
        }
示例#13
0
        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");
        }
示例#14
0
        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);
            }
        }
示例#15
0
 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);
     }
 }
示例#16
0
        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);
        }
示例#17
0
        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);
            }
        }
示例#18
0
        /// <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);
        }
示例#19
0
        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());
        }
示例#20
0
 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);
 }
示例#21
0
        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();
        }
示例#22
0
        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);
        }