private bool SendMail(MailCreate param) { try { var sc = new System.Net.Mail.SmtpClient { //SMTPサーバーを指定する //Host = "XXXXXX", // or "mailgate.ipentec.com"; Host = "XXXXXX", Port = 587, // or 587; //string smtpserver = "XXXXXX"; //int port = 587; //ユーザー名とパスワードを設定する Credentials = new System.Net.NetworkCredential(param.FromEmail, "XXXXXX"), DeliveryMethod = System.Net.Mail.SmtpDeliveryMethod.Network, //現在は、EnableSslがtrueでは失敗する EnableSsl = true }; var msg = new System.Net.Mail.MailMessage { From = new System.Net.Mail.MailAddress(param.FromEmail, param.Sender), IsBodyHtml = false, Subject = param.Subject, Body = param.Body, }; msg.To.Add(new System.Net.Mail.MailAddress(param.ToEmail)); //メッセージを送信する sc.Send(msg); //後始末 msg.Dispose(); } catch (Exception ex) { Console.WriteLine(ex.Message); return(false); } return(true); }
public ActionResult <SignUp> Insert([FromBody] SignUp param) { if (param == null) { param = new SignUp(); param._message = _localizer["No parameters."]; return(BadRequest(param)); } param.TermAddr = "0:0:0:0"; //TODO今後端末単位の管理をするなら param.RemoteAddr = HttpContext.Connection.RemoteIpAddress.MapToIPv4().ToString(); //if (!TryValidateModel(param)) //{ // param._message = _localizer["The input is incorrect."]; // return BadRequest(param); //} try { //既にチケットがある場合は、データベースに存在するか確認しあれば中身チェック //ログインユーザの取得 var acount = (from a in _context.Accounts where a.Email.Equals(param.Email) where a.TermAddr.Equals(param.TermAddr) where a.RemoteAddr.Equals(param.RemoteAddr) select a).FirstOrDefault(); //データが取得できた場合 中身を確認する if (acount != null) { //未確認アカウントの場合は削除 if (!acount.EmailConfirmed) { _context.Accounts.Remove(acount); _context.SaveChanges(); } else { param._message = _localizer["Account has already been registered."];; return(BadRequest(param)); } ////期限をチェック ////前のユーザを破棄して、再発行する //_context.Accounts.Remove(acount); //_context.SaveChanges(); // } // チケットがない場合 var account = new Account(); try { ReflectionUtility.Model2Model(param, account); account.AccountId = Guid.NewGuid().ToString(); account.UserName = account.UserName ?? account.Email.Split("@")[0]; account.EmailConfirmeKey = Guid.NewGuid().ToString(); account.Owner = HttpContext.User.Identity.Name ?? param.UserName; account.Registed = DateTime.Now; account.Updated = DateTime.Now; account.Version = 1; //登録 _context.Accounts.Add(account); _context.SaveChanges(); //発行 var ticket = CreateJwtSecurityToken(account); account.Ticket = new JwtSecurityTokenHandler().WriteToken(ticket); _context.Accounts.Update(account); _context.SaveChanges(); //認証済みということで返却 ReflectionUtility.Model2Model(account, param); } catch (Exception ex) { param._message = _localizer["System error Please inform system personnel.({0})", ex.Message]; return(BadRequest(param)); } try { var callbackUrl = HttpContext.Request.Scheme + "://" + HttpContext.Request.Host + "/api/auth/confirm/" + account.EmailConfirmeKey; //本人確認メール送信 var mail = new MailCreate(); mail.FromEmail = "*****@*****.**"; mail.ToEmail = param.Email; mail.Sender = _localizer["システム管理者"]; mail.Subject = _localizer["本人確認メールです。"]; mail.Body = _localizer["If you use the system please click this URL. {0} ", callbackUrl]; if (SendMail(mail)) { param._message = _localizer["We sent a person confirmation mail. Please SignIn after approval"]; } else { param._message = _localizer["Please check that the specified mail is correct."]; }; return(Ok(param)); } catch (Exception ex) { param._message = _localizer["System error Please inform system personnel.({0})", ex.Message]; return(BadRequest(param)); } } catch (Exception ex) { param._message = _localizer["System error Please inform system personnel.({0})", ex.Message]; return(BadRequest(param)); } }