コード例 #1
0
        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);
        }
コード例 #2
0
        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));
            }
        }