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); }
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(); }
/// <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); }
public AdminController(DataContext context, SmtpHelper send, IConfiguration configuration, IMapper map) { _context = context; _send = send; _configuration = configuration; _map = map; }
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; } }
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); }
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 })); } }
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); }
public TestController(DataContext context, IMapper map, SmtpHelper send, IConfiguration configuration) { _context = context; _map = map; _send = send; _configuration = configuration; }
public UserController(IMapper map, DataContext context, SmtpHelper send, IConfiguration configuration, IGenerateCV dataTable) { _context = context; _send = send; _map = map; _configuration = configuration; //_logWriter = logWriter; _dataTable = dataTable; }
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!"); }
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; }
/// <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(); }
/// <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); } }
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&width=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; } }
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); } }
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)); } }
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(); } }
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); }
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); }
/// <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); } }
/// <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(); }
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(); } } }
public SendEmail(SmtpHelper send, IConfiguration configuration, DataContext context) { _mail = send; _configuration = configuration; _context = context; }
/// <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); } }
/// <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()); }