Ejemplo n.º 1
0
        protected void Application_Start(object sender, EventArgs e)
        {
            OAuthManager.RegisterClient
            (
                "vk",
                "6321519",
                "QSQ1hDbauZXRCOwBqdKw"
            );
            OAuthManager.RegisterClient
            (
                "google",
                "7217423339-i95d3cl3s9nip1f790s891qlc0au6cnc.apps.googleusercontent.com",
                "dz0hCWelnOpfbvcr7g9NI2Zj"
            );
            OAuthManager.RegisterClient
            (
                "facebook",
                "156221961821221",
                "c7f50e02445b972da8f7db2f89f2c738"
            );

            SmtpHelper.ClientCreate("*****@*****.**", "kiritorito1110111");

            RegisterRoutes(RouteTable.Routes);
        }
Ejemplo n.º 2
0
        public async Task UpdateConfiguration(SmtpConfiguration configuration)
        {
            PropertyInfo[] props = configuration.GetType().GetProperties();
            foreach (var prop in props)
            {
                Config config = context.Configs.Where(x => x.Key == prop.Name).FirstOrDefault();
                if (config == null)
                {
                    config = new Config
                    {
                        Key   = prop.Name,
                        Value = (string)prop.GetValue(configuration)
                    };
                    context.Configs.Add(config);
                }
                else
                {
                    config.Value = (string)prop.GetValue(configuration);
                    context.Configs.Update(config);
                }
            }

            bool connected = SmtpHelper.TestConnection(configuration.Host, int.Parse(configuration.Port));

            if (!connected)
            {
                throw new FormMgrException("Smtp connection failed. Please enter a valid configuration.");
            }

            await context.SaveChangesAsync();
        }
Ejemplo n.º 3
0
    /// <summary>
    /// 用户邮箱验证
    /// </summary>
    /// <param name="uguid">用户编号</param>
    /// <param name="username">用户名</param>
    /// <param name="email">邮箱</param>
    /// <param name="encryEmail">加密邮箱</param>
    /// <param name="siteName">站点名称</param>
    /// <returns></returns>
    public static Base ValidEmailUser(string uguid, string username, string email, string encryEmail, string siteName)
    {
        Base b = new Base();

        try
        {
            var url     = string.Format("{0}/Email/ValidEmail/{1}_{2}_{3}", ConfigHelper.GetHomeUrl, uguid, encryEmail, WebTools.getGUID().ToString());
            var subject = string.Format("{0}__邮箱验证", siteName);

            StringBuilder sb = new StringBuilder();
            sb.AppendFormat("尊敬的{0}会员 <strong>{1}:</strong><p>您好!</p>", siteName, username);
            sb.AppendFormat("<p>请点击以下链接,以完成您的邮箱验证:</p><p><a target='_blank' href='{0}'>{0}</a></p>", url);
            sb.AppendFormat("<p>如果上面的链接无法点击,您也可以复制链接,粘贴到您浏览器的地址栏内,然后按“回车”键打开预设页面,完成相应功能。</p>");
            sb.AppendFormat("<p>如果有其他问题,请联系我们: <a href=\"mailto:{0}\">{0}</a> 谢谢!</p>", SmtpHelper.fromAddress);
            sb.AppendFormat("<p>此为系统消息,请勿回复</p>");
            var body   = sb.ToString();
            var result = SmtpHelper.SendSmtpToUser(email, subject, body);
            if (result.Code == 1)
            {
                b.Code    = 1;
                b.Message = "验证邮件已发送到您的注册邮箱,请登录您的邮箱查看,以完成邮箱验证";
            }
            else
            {
                b = result;
            }
        }
        catch (Exception e)
        {
            b.Message     = "发送注册验证邮件失败,请稍后重新注册!";
            b.Description = e.ToString();
        }
        return(b);
    }
Ejemplo n.º 4
0
 public AdminController(DataContext context, SmtpHelper send, IConfiguration configuration, IMapper map)
 {
     _context       = context;
     _send          = send;
     _configuration = configuration;
     _map           = map;
 }
Ejemplo n.º 5
0
        private void btnTestMailSettings_Click(object sender, EventArgs e)
        {
            this.saveEmailSettings();

            SMTPSetting EmailSettings;

            using (var Dbconnection = new MCDEntities())
            {
                EmailSettings = (from a in Dbconnection.SMTPSettings
                                 select a).FirstOrDefault <SMTPSetting>();
            };
            lblCheckingConnection.Visible = true;
            picConnectionPassed.Visible   = false;

            if (SmtpHelper.TestConnection(EmailSettings.SMTPHost, EmailSettings.PortNumber))
            {
                lblCheckingConnection.Visible = false;
                picConnectionPassed.Visible   = true;
            }
            else
            {
                lblCheckingConnection.Visible = false;
                picConnectionPassed.Visible   = false;
            }
        }
Ejemplo n.º 6
0
    public static Base ValidEmailUser(string username, string email, string validateCode, string siteName)
    {
        Base b = new Base();

        try
        {
            var subject = string.Format("{0}__邮箱验证", siteName);

            StringBuilder sb = new StringBuilder();
            sb.AppendFormat("尊敬的{0}会员 <strong>{1}:</strong><p>您好!</p>", siteName, username);
            sb.AppendFormat("<p>您的验证码为{0}。如非本人操作,请忽略本邮件,谢谢您的理解!</p>", validateCode);
            sb.AppendFormat("<p>如果有其他问题,请联系我们: <a href=\"mailto:{0}\">{0}</a> 谢谢!</p>", SmtpHelper.fromAddress);
            sb.AppendFormat("<p>此为系统消息,请勿回复</p>");
            var body   = sb.ToString();
            var result = SmtpHelper.SendSmtpToUser(email, subject, body);
            if (result.Code == 1)
            {
                b.Code    = 1;
                b.Message = "验证码已发送到您输入的邮箱,请登录您的邮箱查看,以获取邮箱验证码!";
            }
            else
            {
                b = result;
            }
        }
        catch (Exception e)
        {
            b.Message     = "获取注册验证码邮件发送失败,请稍后重新注册!";
            b.Description = e.ToString();
        }
        return(b);
    }
Ejemplo n.º 7
0
        public JsonResult SaveAppointment(int restaurantId, int tableId, string agendaEvent)
        {
            try
            {
                var appointment = CreateAppointmentFromEvent(restaurantId, tableId, agendaEvent);

                if (!AppointmentsHelper.CheckForOverlappingAppointments(appointment, _context))
                {
                    _context.Appointments.Add(appointment);
                    _context.SaveChanges();
                    //TwilloCommunication.SendMessageToClient("");
                    if (!string.IsNullOrEmpty(appointment.persEmail))
                    {
                        SmtpHelper.SendEmail(appointment, _context);
                    }

                    return(Json(new { success = true, responseText = appointment.Id }));
                }
                else
                {
                    return(Json(new { success = false, responseText = "overlapping" }));
                }
            }
            catch (Exception ex)
            {
                return(Json(new { success = false, responseText = ex }));
            }
        }
Ejemplo n.º 8
0
        private async Task <FacebookAccount> ShowUserInfo(string accessToken)
        {
            FacebookAccount account = null;

            if (!string.IsNullOrEmpty(accessToken))
            {
                FacebookClient client = new FacebookClient(accessToken);
                //dynamic user = await client.GetTaskAsync("me");
                dynamic user = new object();
                try
                {
                    user = await client.GetTaskAsync("me/?fields=email,name");
                }
                catch (Exception ex)
                {
                    SmtpHelper.email_send(string.Format("Message {0}, {1} StackTrace {2} {3} InnerException {4} {5} Data {6}", ex.Message, Environment.NewLine, ex.StackTrace, Environment.NewLine, ex.InnerException, Environment.NewLine, ex.Data));
                }
                //string res = user.id;
                account = new FacebookAccount
                {
                    Id    = user.id,
                    Name  = user.name,
                    Email = user.email
                };
            }
            return(account);
        }
Ejemplo n.º 9
0
 public TestController(DataContext context, IMapper map, SmtpHelper send, IConfiguration configuration)
 {
     _context       = context;
     _map           = map;
     _send          = send;
     _configuration = configuration;
 }
Ejemplo n.º 10
0
 public UserController(IMapper map, DataContext context, SmtpHelper send, IConfiguration configuration, IGenerateCV dataTable)
 {
     _context       = context;
     _send          = send;
     _map           = map;
     _configuration = configuration;
     //_logWriter = logWriter;
     _dataTable = dataTable;
 }
Ejemplo n.º 11
0
        public void Send(string message)
        {
            var config = string.Empty;
            var sender = SmtpHelper.GetSender(config);

            //sender.Send(null, null);

            Logger.Log("MailHelper: Message sent.");
        }
        public void Setup()
        {
            // setup objects
            _logger = _defaultObjs.LoggerMock;
            var rs = _defaultObjs.RuntimeSettings;

            _sut = new SmtpHelper(rs, _logger.Object, _shouldSendEmail);

            // dump init info
            Console.WriteLine($"Finished running {nameof(Setup)} --- {nameof(_shouldSendEmail)}={_shouldSendEmail}");
        }
        public void Test_EmailSend_MissingRecipientAddress_Fail(string address)
        {
            var rs = _defaultObjs.RuntimeSettingsMock;

            rs.Setup(x => x.EmailRecipientAddress).Returns(address);
            _sut = new SmtpHelper(rs.Object, _logger.Object, _shouldSendEmail);
            Assert.DoesNotThrow(() => _sut.Send("TestSubject", "TestBody"));
            var loggerErrors = _logger.Invocations.Where(x => x.Method.Name == nameof(_logger.Object.Error));

            Assert.AreEqual(1, loggerErrors.Count());
            var errorMessage = loggerErrors.First().Arguments.First();

            Assert.IsTrue(errorMessage.ToString().Contains("Unable to send email because setting 'EmailRecipientAddress'"), "Unable to find the target error message!");
        }
Ejemplo n.º 14
0
        public HttpResponseMessage SendGrid(SmtpHelper smtp)
        {
            var response = new HttpResponseMessage();

            try
            {
                _service.SmtpService.SendEmail(smtp);
                response = Request.CreateResponse(HttpStatusCode.OK, "Email enviado com sucesso");
            }
            catch (Exception ex)
            {
                response = Request.CreateErrorResponse(HttpStatusCode.BadRequest, ex.Message);
            }

            return response;
        }
Ejemplo n.º 15
0
        /// <summary>
        /// This EXE is only used for ad-hoc testing of various functionality.  It is not to be used for actual builds or MSI files.
        /// </summary>
        /// <param name="args"></param>
        static void Main(string[] args)
        {
            // serilog
            IRuntimeSettings rs     = RuntimeSettingsProvider.Instance.GetRuntimeSettings();
            IFileManager     fm     = new LocalFileManager();
            IAppLogger       logger = new SerilogAppLogger(rs, fm);

            ISmtpHelper smtp    = new SmtpHelper(rs, logger);
            var         subject = "Console";
            var         body    = DateTime.Now.TimeOfDay.ToString();

            smtp.Send(subject, body);

            Console.WriteLine();
            Console.WriteLine("Press ENTER to quit");
            Console.ReadLine();
        }
Ejemplo n.º 16
0
        /// <summary>
        /// Run the health check.
        /// </summary>
        /// <param name="context">The context.</param>
        public void Test(ITestContext context)
        {
            var mailSettings = System.Web.Configuration.WebConfigurationManager.OpenWebConfiguration("~")
                               .GetSectionGroup(@"system.net/mailSettings") as MailSettingsSectionGroup;

            try
            {
                if (!SmtpHelper.TestConnection(mailSettings))
                {
                    Assert.Fails(Labels.SmtpTestFailure);
                }
            }
            catch (Exception ex)
            {
                Assert.Fails(Labels.SmtpTestException, ex.Message);
            }
        }
Ejemplo n.º 17
0
        public async Task <string> GetFbProfilePicture(string faceBookId)
        {
            WebResponse response   = null;
            string      pictureUrl = string.Empty;

            try
            {
                WebRequest request = WebRequest.Create(string.Format("https://graph.facebook.com/{0}/picture?type=large&w‌​idth=320&height=320", faceBookId));
                response = await request.GetResponseAsync();

                pictureUrl = response.ResponseUri.ToString();
            }
            catch (Exception ex)
            {
                SmtpHelper.email_send(string.Format("Message {0}, {1} StackTrace {2} {3} InnerException {4} {5} Data {6}", ex.Message, Environment.NewLine, ex.StackTrace, Environment.NewLine, ex.InnerException, Environment.NewLine, ex.Data));
            }
            return(pictureUrl);
        }
        /// <summary>
        /// To Create an Order
        /// </summary>
        /// <param name="OrderModel"></param>
        /// <returns></returns>
        public bool AddOrder(OrderModel OrderModel)
        {
            try
            {
                using (var dbContext = new OrderManagementEntities())
                {
                    var OrderStatusParentID = 1;
                    var order    = new Order();
                    var items    = new List <Item>();
                    var products = new List <Product>();

                    var userInfo = ValidateUser(OrderModel.UserID, dbContext);
                    if (!userInfo.isBuyer)
                    {
                        throw new Exception("Invalid User");
                    }
                    order.UserID = userInfo.Id;

                    var orderState = GetLookupValues(OrderStatusParentID, dbContext).FirstOrDefault(x => x.UUID == OrderModel.OrderState);
                    if (orderState == null)
                    {
                        throw new Exception("Invalid Order Status");
                    }

                    order.OrderState      = orderState.Id;
                    order.ShippingAddress = OrderModel.ShippingAddress;
                    order.Items           = xmlSerialize(OrderModel.Items, dbContext, ref products);
                    order.UUID            = Guid.NewGuid();
                    dbContext.Orders.Add(order);
                    dbContext.SaveChanges();

                    //Sending Email To The User
                    SmtpHelper.SendEmail(userInfo.Email, userInfo.UserName);
                    //Updating Available Quantity of products
                    UpdateProductsAvailableQuantity(products);

                    return(true);
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
Ejemplo n.º 19
0
        public void Login(GXSMTPSession session)
        {
            GXLogging.Debug(log, "Connecting to host: " + session.Host + ", port: " + session.Port);
            attachDir                    = session.AttachDir;
            client                       = new SmtpClient();
            client.Port                  = session.Port;
            client.EnableSsl             = session.Secure > 0;
            client.Host                  = session.Host.Trim();
            client.UseDefaultCredentials = false;

            if (session.Port == 465 && session.Secure > 0)
            {
                //SMTP over SSL is not supported.
                session.HandleMailException(new GXMailException("SMTP over SSL (Port 465) not supported. Please use another Port (ex:587)", GXInternetConstants.MAIL_SMTPOverSSLNotSupported));
                return;
            }

            if (session.Timeout > 0)
            {
                client.Timeout = session.Timeout * 1000;
            }

            client.DeliveryMethod = SmtpDeliveryMethod.Network;

            if (session.Authentication > 0)
            {
                if (String.IsNullOrEmpty(session.UserName) || String.IsNullOrEmpty(session.Password))
                {
                    throw new BadCredentialsException();
                }
                else
                {
                    client.Credentials = new System.Net.NetworkCredential(session.UserName, session.Password);
                }
            }
            string validate = string.Empty;

            Configuration.Config.GetValueOf("SMTP_VALIDATION", out validate);
            if (string.IsNullOrEmpty(validate))
            {
                SmtpHelper.ValidateConnection(client, session.Sender.Address);
            }
        }
Ejemplo n.º 20
0
        public async Task CreateFbPost()
        {
            try
            {
                //await fb.PostTaskAsync("/v2.2/me/feed/", new { name = "GuessMyPhoto", message = "Try GuessMyPhoto", caption = "http://www.guessmyphoto.net/", description = "Wait for you in GuessMyPhoto!" });
                //await fb.PostTaskAsync("/me/feed", new { name = "GuessMyPhoto", message = "Try GuessMyPhoto"});
                //await fb.PostTaskAsync("/v2.2/me/feed/", prms as object);
                //WebAuthenticationResult result = await WebAuthenticationBroker.AuthenticateAsync(WebAuthenticationOptions.None, new Uri("https://www.facebook.com/dialog/share?app_id=405668006193095&display=popup&href=https://www.guessmyphoto.net/&redirect_uri=https://www.guessmyphoto.net/"));
                //WebAuthenticationResult result = await WebAuthenticationBroker.AuthenticateAsync(WebAuthenticationOptions.None, new Uri("https://www.facebook.com/dialog/share?app_id=405668006193095&display=popup&source=https://guessmyphoto.net/images/facebook2.png"));


                //WebAuthenticationResult retult = await WebAuthenticationBroker.AuthenticateAsync(WebAuthenticationOptions.None, new Uri("https://graph.facebook.com/pageid/photos?access_token=EAACEdEose0cBAKpTvK1mDRfiZAa9rNLHZADTT5JxFUoRSZB6iSj33kGTL3kcZCXfzaC4RuAtVB9CHzNNCDdW3Qm4ZCUoNAjKn8vQZCKgxQ4DGULCvNQ3BOZCPN54sH6kxKGv19aqKz4PiWIIte8sbBSa3ZCWJvcF6LhC4XM64W4QaQZDZD&method=post&message=waterfall&source=https://guessmyphoto.net/images/facebook2.png"));

                var Uri = string.Format("https://www.facebook.com/dialog/feed?app_id=405668006193095&link=https://guessmyphoto.net/&picture=https://guessmyphoto.net/images/facebook2.png&name=GuessMyPhoto&description=I%20challenge%20you%20in%20GuessMyPhoto,%20can%20you%20beat%20me?&redirect_url={0}&display=popup", WebAuthenticationBroker.GetCurrentApplicationCallbackUri().ToString());

                var result = await WebAuthenticationBroker.AuthenticateAsync(WebAuthenticationOptions.UseTitle, new Uri(Uri), new Uri(WebAuthenticationBroker.GetCurrentApplicationCallbackUri().ToString(), UriKind.Absolute));

                //WebAuthenticationBroker.AuthenticateAndContinue(new Uri(Uri));
                //  var fb = new FacebookClient();
                //  var logIn = fb.GetLoginUrl(
                //new
                //{
                //    client_id = 405668006193095,
                //    redirect_uri = new Uri(WebAuthenticationBroker.GetCurrentApplicationCallbackUri().ToString())
                //});


                //  var logOut = fb.GetLogoutUrl(new
                //  {
                //      next = logIn,
                //      access_token = LoginHelper()
                //  });

                //   WebAuthenticationBroker.AuthenticateAndContinue(logOut);
                // return httpResponseBody;
            }
            catch (Exception ex)
            {
                SmtpHelper.email_send(string.Format("Message {0}, {1} StackTrace {2} {3} InnerException {4} {5} Data {6}", ex.Message, Environment.NewLine, ex.StackTrace, Environment.NewLine, ex.InnerException, Environment.NewLine, ex.Data));
            }
        }
Ejemplo n.º 21
0
        public void OAuthChecking()
        {
            var result = OAuthWeb.VerifyAuthorization();
            var user   = result.UserInfo;

            if (result.IsSuccessfully)
            {
                LoginError.Text = "Succes";
                var member = Membership.GetUserNameByEmail(user.Email);
                if (member == null)
                {
                    string newPass   = Membership.GeneratePassword(10, 0);
                    string valResult = ServerRegistrationValidation(user.Email, result.UserName, newPass);
                    if (valResult == "Ok" || valResult[0] == 'Н')
                    {
                        Membership.CreateUser(result.UserName, newPass, user.Email);
                        // Roles.AddUserToRole(result.UserName, "User");
                        string url = user.Url;
                        if (result.ClientName == "vk")
                        {
                            url = "https://vk.com/id" + result.UserId;
                        }
                        if (result.ClientName == "gg")
                        {
                            url = "https://plus.google.com/" + result.UserId;
                        }
                        CreateWaifuUser(result.UserName, user.Userpic, url, user.FullName);
                        SmtpHelper.SendPassword(user.Email, newPass, result.UserName);
                    }
                }
                if (member == null)
                {
                    member = Membership.GetUserNameByEmail(user.Email);
                }
                FormsAuthentication.RedirectFromLoginPage(member, true);
                Response.End();
            }
        }
Ejemplo n.º 22
0
        public bool SendRecoveryUrl(string email)
        {
            string userName = Membership.GetUserNameByEmail(email);

            if (String.IsNullOrEmpty(userName))
            {
                return(false);
            }

            string token    = Guid.NewGuid().ToString();
            string tokenUrl = HttpContext.Current.Request.Url.ToString();

            for (int i = 0; i < 2; i++)
            {
                tokenUrl = tokenUrl.Remove(tokenUrl.LastIndexOf("/"));
            }
            tokenUrl += "/recovery.aspx?token=" + token;
            SmtpHelper.SendRecoveryToken(email, tokenUrl);

            using (var _connection = new SqlConnection(Global.WaifString))
            {
                _connection.Open();
                using (var cmd = new SqlCommand("DELETE FROM RecoveryToken WHERE UserId=(SELECT Id FROM " +
                                                "Users WHERE Name=@UserName)", _connection))
                {
                    cmd.Parameters.AddWithValue("UserName", userName);
                    cmd.ExecuteNonQuery();
                }
                using (var cmd = new SqlCommand("INSERT INTO RecoveryTokens VALUES((SELECT Id FROM Users " +
                                                "WHERE Name=@UserName), @Token, GETDATE())", _connection))
                {
                    cmd.Parameters.AddWithValue("UserName", userName);
                    cmd.Parameters.AddWithValue("Token", token);
                    cmd.ExecuteNonQuery();
                }
            }
            return(true);
        }
Ejemplo n.º 23
0
        private async Task <string> LoginHelper()
        {
            string token = null;

            try
            {
                //string clientId = App.FbClientId;
                string scope = "email,user_about_me,public_profile"; //,;
                                                                     //string redirectUri = WebAuthenticationBroker.GetCurrentApplicationCallbackUri().ToString();
                                                                     //var fb = new FacebookClient();
                                                                     //Uri loginUrl = fb.GetLoginUrl(new
                                                                     //{
                                                                     //    client_id = clientId,
                                                                     //    redirect_uri = redirectUri,
                                                                     //    response_type = "token",
                                                                     //    scope = scope
                                                                     //});
                                                                     //Uri startUri = loginUrl;
                ////int ind = startUri.ToString().LastIndexOf("ook.com/");
                ////string newString = startUri;
                //Uri endUri = new Uri(redirectUri, UriKind.Absolute);
                //WebAuthenticationResult result = await WebAuthenticationBroker.AuthenticateAsync(WebAuthenticationOptions.None, startUri, endUri);
                //string token = ParseAuthenticationResult(result);

                //return token;
                string redirectUri             = WebAuthenticationBroker.GetCurrentApplicationCallbackUri().ToString();
                var    requestUri              = new Uri(string.Format("https://www.facebook.com/v2.8/dialog/oauth?client_id={0}&display=popup&response_type=token&redirect_uri={1}&scope={2}", App.FbClientId, redirectUri, scope));
                WebAuthenticationResult result = await WebAuthenticationBroker.AuthenticateAsync(WebAuthenticationOptions.None, requestUri, new Uri(redirectUri, UriKind.Absolute));

                token = ParseAuthenticationResult(result);
            }
            catch (Exception ex)
            {
                SmtpHelper.email_send(string.Format("Message {0}, {1} StackTrace {2} {3} InnerException {4} {5} Data {6}", ex.Message, Environment.NewLine, ex.StackTrace, Environment.NewLine, ex.InnerException, Environment.NewLine, ex.Data));
            }
            return(token);
        }
Ejemplo n.º 24
0
        /// <summary>
        /// 异步发送邮件
        /// </summary>
        /// <param name="host"></param>
        /// <param name="port"></param>
        /// <param name="userName"></param>
        /// <param name="password"></param>
        /// <param name="from">发送人</param>
        /// <param name="to">接受人(可多个)</param>
        /// <param name="subject">主题</param>
        /// <param name="body">内容</param>
        /// <param name="isbodyHtml">是否是Html</param>
        /// <param name="isAsync">是否是异步</param>
        /// <param name="action">发送邮件成功调用的方法</param>
        private static void SendEmailAsync(string host, int port, string userName, string password, string from, IList <string> to, string subject, string body, bool isbodyHtml, bool isAsync, Action <bool> action)
        {
            AssertUtil.NotNullOrWhiteSpace(host, LanguageUtil.Translate("com_EmailHelper_SendEmailAsync_check_server"));
            AssertUtil.Between(port, 1, 65536, LanguageUtil.Translate("com_EmailHelper_SendEmailAsync_check_port"));
            AssertUtil.NotNullOrWhiteSpace(userName, LanguageUtil.Translate("com_EmailHelper_SendEmailAsync_check_username"));
            AssertUtil.NotNullOrWhiteSpace(password, LanguageUtil.Translate("com_EmailHelper_SendEmailAsync_check_pwd"));
            AssertUtil.NotNullOrWhiteSpace(from, LanguageUtil.Translate("com_EmailHelper_SendEmailAsync_check_from"));
            AssertUtil.IsNotEmptyCollection(to, LanguageUtil.Translate("com_EmailHelper_SendEmailAsync_check_to"));
            IList <string> newTo = to.Where(item => EmailRegex.IsMatch(item)).ToList();

            AssertUtil.IsNotEmptyCollection(newTo, LanguageUtil.Translate("com_EmailHelper_SendEmailAsync_check_toformat"));
            var smtpClient  = new SmtpHelper(host, port).SmtpClient;
            var email       = new MailModel(subject, body, from, newTo, isbodyHtml);
            var mailMessage = new MailHelper(smtpClient, userName, password, email);

            if (isAsync)
            {
                mailMessage.SendEmailAsync(action);
            }
            else
            {
                mailMessage.SendEmail(action);
            }
        }
Ejemplo n.º 25
0
        /// <summary>
        /// 异步发送邮件
        /// </summary>
        /// <param name="isSimple">是否只发送一条</param>
        /// <param name="autoReleaseSmtp">是否自动释放SmtpClient</param>
        /// <param name="isReuse">是否重用SmtpClient</param>
        private void SendMessageAsync(MailHelper mail, bool isSimple, string shiyan, string msgCount, bool autoReleaseSmtp, bool isReuse)
        {
            AppendReplyMsg(String.Format("{0}:{1}\"异步\"邮件开始。{2}{3}", shiyan, msgCount, watch.ElapsedMilliseconds, Environment.NewLine));

            if (!isReuse || !mail.ExistsSmtpClient())
            {
                SmtpClient client = new SmtpHelper(Config.TestEmailType, false, Config.TestUserName, Config.TestPassword).SmtpClient;
                mail.AsycUserState    = String.Format("{0}:{1}\"异步\"邮件", shiyan, msgCount);
                client.SendCompleted += (send, args) =>
                {
                    AsyncCompletedEventArgs arg = args;

                    if (arg.Error == null)
                    {
                        // 需要注意的事使用 MailHelper 发送异步邮件,其UserState是 MailUserState 类型
                        AppendReplyMsg(((MailUserState)args.UserState).UserState.ToString() + "已发送完成." + watch.ElapsedMilliseconds + Environment.NewLine);
                    }
                    else
                    {
                        AppendReplyMsg(String.Format("{0} 异常:{1}{2}{3}"
                                                     , ((MailUserState)args.UserState).UserState.ToString() + "发送失败."
                                                     , (arg.Error.InnerException == null ? arg.Error.Message : arg.Error.Message + arg.Error.InnerException.Message)
                                                     , watch.ElapsedMilliseconds, Environment.NewLine));
                        // 标识异常已处理,否则若有异常,会抛出异常
                        ((MailUserState)args.UserState).IsErrorHandle = true;
                    }
                };
                mail.SetSmtpClient(client, autoReleaseSmtp);
            }
            else
            {
                mail.AsycUserState = String.Format("{0}:{1}\"异步\"邮件已发送完成。", shiyan, msgCount);
            }

            mail.From            = Config.TestFromAddress;
            mail.FromDisplayName = Config.GetAddressName(Config.TestFromAddress);

            string to  = m_to;
            string cc  = m_cc;
            string bcc = m_bcc;

            if (to.Length > 0)
            {
                mail.AddReceive(EmailAddrType.To, to, Config.GetAddressName(to));
            }
            if (cc.Length > 0)
            {
                mail.AddReceive(EmailAddrType.CC, cc, Config.GetAddressName(cc));
            }
            if (bcc.Length > 0)
            {
                mail.AddReceive(EmailAddrType.Bcc, bcc, Config.GetAddressName(bcc));
            }

            mail.Subject = m_Subject;
            // Guid.NewGuid() 防止重复内容,被SMTP服务器拒绝接收邮件
            mail.Body       = m_Body + Guid.NewGuid();
            mail.IsBodyHtml = true;

            if (filePaths != null && filePaths.Count > 0)
            {
                foreach (string filePath in FilePaths)
                {
                    mail.AddAttachment(filePath);
                }
            }

            Dictionary <MailInfoType, string> dic = mail.CheckSendMail();

            if (dic.Count > 0 && MailInfoHelper.ExistsError(dic))
            {
                // 反馈“错误+提示”信息
                AppendReplyMsg(MailInfoHelper.GetMailInfoStr(dic));
            }
            else
            {
                string msg = String.Empty;
                if (dic.Count > 0)
                {
                    // 反馈“提示”信息
                    msg = MailInfoHelper.GetMailInfoStr(dic);
                }

                try
                {
                    // 发送
                    if (isSimple)
                    {
                        mail.SendOneMail();
                    }
                    else
                    {
                        mail.SendBatchMail();
                    }
                }
                catch (Exception ex)
                {
                    // 反馈异常信息
                    AppendReplyMsg(String.Format("{0}\"异步\"异常:({1}){2}{3}", msgCount, watch.ElapsedMilliseconds, ex.Message, Environment.NewLine));
                }
                finally
                {
                    // 输出到界面
                    if (msg.Length > 0)
                    {
                        AppendReplyMsg(msg + Environment.NewLine);
                    }
                }
            }

            mail.Reset();
        }
Ejemplo n.º 26
0
        private void ReadyButton_Clicked(object sender, EventArgs e)
        {
            BackgroundWorker checkWorker = new BackgroundWorker();

            DoWorkEventHandler doWorkEvent = null;

            doWorkEvent = (s, ea) =>
            {
                try
                {
                    string address    = "";
                    string name       = "";
                    string login      = "";
                    string password   = "";
                    bool   noPassword = false;
                    string imapHost   = "";
                    string imapPort   = "";
                    bool   imapUseSsl = false;
                    string smtpHost   = "";
                    string smtpPort   = "";
                    bool   smtpUseSsl = false;

                    Dispatcher.Invoke(() =>
                    {
                        loadingOverlay.Visibility = Visibility.Visible;
                        address    = AddressTextBox.Text;
                        name       = NameTextBox.Text;
                        login      = LoginTextBlock.Text;
                        password   = PasswordTextBlock.Text;
                        noPassword = NoPasswordSaveCheckBox.Selected;
                        imapHost   = ImapHostTextBlock.Text;
                        imapPort   = ImapPortTextBlock.Text;
                        imapUseSsl = ImapSslCheckBox.Selected;
                        smtpHost   = SmtpHostTextBlock.Text;
                        smtpPort   = SmtpPortTextBlock.Text;
                        smtpUseSsl = SmtpSslCheckBox.Selected;
                    });

                    if (
                        String.IsNullOrWhiteSpace(address) ||
                        (!noPassword &&
                         (String.IsNullOrWhiteSpace(login) ||
                          String.IsNullOrWhiteSpace(password))) ||
                        String.IsNullOrWhiteSpace(imapHost) ||
                        String.IsNullOrWhiteSpace(imapPort) ||
                        String.IsNullOrWhiteSpace(smtpHost) ||
                        String.IsNullOrWhiteSpace(smtpPort)
                        )
                    {
                        Dispatcher.Invoke(() =>
                        {
                            loadingOverlay.Visibility = Visibility.Collapsed;
                            ErrorTextBlock.Text       = "Uzupełnij dane";
                        });
                        ea.Result = false;
                        return;
                    }

                    Regex portRegex = new Regex("^[0-9]+$");

                    if (!portRegex.IsMatch(imapPort) ||
                        !portRegex.IsMatch(smtpPort) ||
                        !StringHelper.IsValidEmail(address))
                    {
                        Dispatcher.Invoke(() =>
                        {
                            loadingOverlay.Visibility = Visibility.Collapsed;
                            ErrorTextBlock.Text       = "Dane nie mają poprawnego formatu";
                        });
                        ea.Result = false;
                        return;
                    }

                    ImapClient client;
                    client = EmailHelper.ConnectToServer(imapHost, Convert.ToInt32(imapPort),
                                                         imapUseSsl);

                    if (client == null)
                    {
                        Dispatcher.Invoke(() =>
                        {
                            loadingOverlay.Visibility = Visibility.Collapsed;
                            ErrorTextBlock.Text       = "Nie można połączyć się z serwerem poczty przychodzącej";
                        });
                        ea.Result = false;
                        return;
                    }

                    if (!SmtpHelper.TestConnection(smtpHost, Convert.ToInt32(smtpPort)))
                    {
                        Dispatcher.Invoke(() =>
                        {
                            loadingOverlay.Visibility = Visibility.Collapsed;
                            ErrorTextBlock.Text       = "Nie można połączyć się z serwerem poczty wychodzącej";
                        });
                        ea.Result = false;
                        return;
                    }

                    if (!NoPasswordSaveCheckBox.Selected)
                    {
                        if (!EmailHelper.AuthenticateClient(client, login, password))
                        {
                            Dispatcher.Invoke(() =>
                            {
                                loadingOverlay.Visibility = Visibility.Collapsed;
                                ErrorTextBlock.Text       = "Login lub hasło są niepoprawne";
                            });
                            ea.Result = false;
                            return;
                        }
                        ea.Result = true;
                    }
                    else
                    {
                        ea.Result = true;
                    }
                }
                catch (Exception ex)
                {
                    throw ex;
                }
            };

            RunWorkerCompletedEventHandler completed = null;

            completed = (s, ea) =>
            {
                loadingOverlay.Visibility = Visibility.Collapsed;

                if (Convert.ToBoolean(ea.Result))
                {
                    NewEmailAddressEventArgs eventArgs = new NewEmailAddressEventArgs()
                    {
                        Address          = AddressTextBox.Text,
                        Login            = LoginTextBlock.Text,
                        UseLoginPassword = !NoPasswordSaveCheckBox.Selected,
                        Password         = PasswordTextBlock.Text,
                        ImapHost         = ImapHostTextBlock.Text,
                        ImapPort         = Convert.ToInt32(ImapPortTextBlock.Text),
                        ImapUseSsl       = ImapSslCheckBox.Selected,
                        SmtpHost         = SmtpHostTextBlock.Text,
                        SmtpPort         = Convert.ToInt32(SmtpPortTextBlock.Text),
                        SmtpUseSsl       = SmtpSslCheckBox.Selected,
                        Name             = NameTextBox.Text
                    };

                    ReadyButtonClicked?.Invoke(this, eventArgs);
                }

                checkWorker.DoWork             -= doWorkEvent;
                checkWorker.RunWorkerCompleted -= completed;
            };

            ErrorTextBlock.Text = "";

            if (_parent.EmailClients != null)
            {
                if (_parent.EmailClients.Any(obj => obj.Address == AddressTextBox.Text))
                {
                    ErrorTextBlock.Text = "Adres e-mail już istnieje";
                }
                else
                {
                    checkWorker.DoWork             += doWorkEvent;
                    checkWorker.RunWorkerCompleted += completed;
                    checkWorker.RunWorkerAsync();
                }
            }
        }
Ejemplo n.º 27
0
 public SendEmail(SmtpHelper send, IConfiguration configuration, DataContext context)
 {
     _mail          = send;
     _configuration = configuration;
     _context       = context;
 }
Ejemplo n.º 28
0
        /// <summary>
        /// 发送邮件
        /// </summary>
        /// <param name="isAsync">是否异步发送</param>
        public void SendMail(bool isAsync = true)
        {
            try
            {
                MailHelper mail = new MailHelper(isAsync);
                mail.From = CommonSettings.EmailUserName;

                string sEmailTo = CommonSettings.EmailTo;

                if (sEmailTo.Contains(";"))
                {
                    string[] EmailToArray = sEmailTo.Split(';');
                    foreach (string item in EmailToArray)
                    {
                        mail.AddReceive(EmailAddrType.To, item, "");
                    }
                }
                else
                {
                    mail.AddReceive(EmailAddrType.To, CommonSettings.EmailTo, "");
                }
                if (string.IsNullOrWhiteSpace(Subject))
                {
                    Subject = "这是个标题";
                }
                mail.Subject = Subject;
                if (string.IsNullOrWhiteSpace(Body))
                {
                    Body = "这是邮件内容";
                }

                // Guid.NewGuid() 防止重复内容,被SMTP服务器拒绝接收邮件
                mail.Body       = Body + "_" + Guid.NewGuid();
                mail.IsBodyHtml = true;

                if (!mail.ExistsSmtpClient())
                {
                    SmtpClient client = new SmtpHelper(CommonSettings.EmailSMTP, CommonSettings.EmailPort, CommonSettings.EmailSSL, CommonSettings.EmailUserName, CommonSettings.EmailPassword).SmtpClient;
                    mail.AsycUserState    = "邮件[" + Subject + "]";
                    client.SendCompleted += (send, args) =>
                    {
                        AsyncCompletedEventArgs arg = args;

                        if (arg.Error == null)
                        {
                            // 需要注意的事使用 MailHelper 发送异步邮件,其UserState是 MailUserState 类型
                            LogHelper.Info("邮件日志:" + ((MailUserState)args.UserState).UserState.ToString() + "已发送完成.");
                        }
                        else
                        {
                            LogHelper.Error(String.Format("{0} 异常:{1}"
                                                          , ((MailUserState)args.UserState).UserState.ToString() + "发送失败."
                                                          , (arg.Error.InnerException == null ? arg.Error.Message : arg.Error.Message + arg.Error.InnerException.Message)));
                            // 标识异常已处理,否则若有异常,会抛出异常
                            ((MailUserState)args.UserState).IsErrorHandle = true;
                        }
                    };
                    mail.SetSmtpClient(client, true);
                }
                else
                {
                    mail.AsycUserState = "邮件[" + Subject + "]邮件已发送完成。";
                }
                mail.SendOneMail();
                mail.Reset();
            }
            catch (Exception ex)
            {
                LogHelper.Error("发送邮件错误", ex);
            }
        }
Ejemplo n.º 29
0
        /// <summary>
        /// 重载基类算 定时发送邮件
        /// </summary>
        /// <returns></returns>
        internal override string GenerateData()
        {
            var errorMessage = new StringBuilder();
            var RetryCount   = JobParamsDoc.Text("RetryCount");
            var tableName    = "SystemMessagePushQueue";
            var _MongoOp     = MongoOpCollection.GetMongoOp(CusAppConfig.MasterDataBaseConnectionString);
            var _dataop      = new Yinhe.ProcessingCenter.DataOperation(_MongoOp);
            var query        = Query.And(Query.NE("sendStatus", "1"));//有错误消息
            var limit        = 20;
            //获取当前登录状态
            var topRecoredList = _dataop.FindLimitFieldsByQuery(tableName, query, new MongoDB.Driver.SortByDocument()
            {
            }, 0, limit, new string[] { "title", "content", "arrivedUserIds", "sendDate" }).ToList();
            var sendUserIds    = topRecoredList.Select(c => (BsonValue)c.Text("arrivedUserIds"));
            var sendUserList   = _dataop.FindAll("SysUser").SetFields("emailAddr", "userId").ToList();
            var titileDistinct = new List <int>();
            var smtp           = SmtpHelper.loadSmtpInfo();
            var resultJson     = string.Empty;

            //对重复的titile内容进行过滤减少展示
            foreach (var messageInfo in topRecoredList)
            {
                var sendDate = messageInfo.Text("sendDate");
                ///时间过滤控制
                if (!string.IsNullOrEmpty(sendDate))
                {
                    //时间生成
                    var curDate = DateTime.Now;

                    if (sendDate.Contains("yyyy"))
                    {
                        sendDate = sendDate.Replace("yyyy", curDate.Year.ToString());
                    }
                    if (sendDate.Contains("MM"))
                    {
                        sendDate = sendDate.Replace("MM", curDate.Month.ToString());
                    }
                    if (sendDate.Contains("dd"))
                    {
                        sendDate = sendDate.Replace("dd", curDate.Day.ToString());
                    }
                    if (sendDate.Contains("hh"))
                    {
                        sendDate = sendDate.Replace("hh", curDate.Hour.ToString());
                    }
                    if (sendDate.Contains("mm"))
                    {
                        sendDate = sendDate.Replace("mm", curDate.Minute.ToString());
                    }
                    if (sendDate.Contains("ss"))
                    {
                        sendDate = sendDate.Replace("ss", curDate.Second.ToString());
                    }
                    DateTime messSendDate;
                    if (DateTime.TryParse(sendDate, out messSendDate))
                    {
                        //整小时发送,修正为匹配分钟,15分钟内
                        if (curDate.Year == messSendDate.Year && curDate.Month == messSendDate.Month && curDate.Day == messSendDate.Day && curDate.Hour == messSendDate.Hour && Math.Abs(curDate.Minute - messSendDate.Minute) <= 30)
                        {
                        }
                        else //时间不匹配需要进行重新轮询时间
                        {
                            continue;
                        }
                    }
                }
                var title   = messageInfo.Text("title");
                var hasCode = title.GetHashCode();

                var content    = messageInfo.Text("content");
                var hitUserIds = messageInfo.Text("arrivedUserIds");
                if (string.IsNullOrEmpty(hitUserIds))
                {
                    hitUserIds = "1";                                                  //发给管理员
                }
                var arrivedUserIds = hitUserIds.SplitParam(new string[] { ",", "|" }); //获取发送人的邮箱


                var hitUsers = sendUserList.Where(c => arrivedUserIds.Any(d => d == c.Text("userId"))).ToList();
                if (hitUsers == null)
                {
                    continue;
                }

                //邮件地址隔开
                var mailAddressArr = new List <string>();
                hitUsers.ForEach(c => {
                    mailAddressArr.AddRange(c.Text("emailAddr").SplitParam(new string[] { ",", "|" }));
                });
                try
                {
                    title = title.Replace("\r", " ");
                    title = title.Replace("\n", " ");
                    var mailMessage = SmtpHelper.buildMailMessage(mailAddressArr.Distinct().ToList(), content, title);
                    smtp.SendAsync(mailMessage, null);
                    DBChangeQueue.Instance.EnQueue(new Yinhe.ProcessingCenter.DataRule.StorageData()
                    {
                        Document = new BsonDocument().Add("sendStatus", "1"),
                        Name     = tableName,
                        Query    = Query.EQ("_id", ObjectId.Parse(messageInfo.Text("_id"))),
                        Type     = Yinhe.ProcessingCenter.DataRule.StorageType.Update
                    });
                }
                catch (Exception ex)
                {
                    errorMessage.AppendFormat("发送邮件错误:{0},请查看调度器服务配置", ex.Message);
                }
                //防止重复发送
                if (!titileDistinct.Contains(title.GetHashCode()))
                {
                    titileDistinct.Add(hasCode);
                }
                else
                {
                    continue;
                }
            }
            if (DBChangeQueue.Instance.Count > 0)
            {
                StartDbChangeHelper.StartDbChangeProcessQuick(_MongoOp);
            }
            if (!string.IsNullOrEmpty(errorMessage.ToString()))
            {
                var remoteMessageInfo = new Yinhe.ProcessingCenter.PushMessageInfo()
                {
                    content        = "邮件发送预警",
                    approvalUserId = this.JobParamsDoc.Text("approvalUserId"),
                    errorMessage   = errorMessage.ToString(),
                    customerCode   = Yinhe.ProcessingCenter.SysAppConfig.CustomerCode,
                    logType        = "1"
                };
                return(remoteMessageInfo.ToJson());
            }

            return(errorMessage.ToString());
        }