이메일 확인을 어떻게 수정할 수 있습니까?-.NET Core에서는 작동하지 않습니다.

오마르 칼레드

이미 등록 작업이 있습니다.

public async Task<IActionResult> OnPostAsync(string returnUrl = null)
{
            var useremail = _userManager.Users.FirstOrDefault(u => u.Email.ToLower() == Input.Email.ToLower());

            if (useremail == null)
            {
                returnUrl = returnUrl ?? Url.Content("~/");
                ExternalLogins = (await _signInManager.GetExternalAuthenticationSchemesAsync()).ToList();

                if (ModelState.IsValid)
                {
                    var user = new IdentityUser { UserName = Input.UserName, Email = Input.Email };
                    var result = await _userManager.CreateAsync(user, Input.Password);
                    if (result.Succeeded)
                    {
                        _logger.LogInformation("User created a new account with password.");

                        var code = await _userManager.GenerateEmailConfirmationTokenAsync(user);
                        code = WebEncoders.Base64UrlEncode(Encoding.UTF8.GetBytes(code));
                        var callbackUrl = Url.Page(
                            "/Account/ConfirmEmail",
                            pageHandler: null,
                            values: new { area = "Identity", userId = user.Id, code = code },
                            protocol: Request.Scheme);

                        await _emailSender.SendEmailAsync(Input.Email, "Confirm your email",
                            $"Please confirm your account by <a href='{HtmlEncoder.Default.Encode(callbackUrl)}'>clicking here</a>.");

                        if (_userManager.Options.SignIn.RequireConfirmedAccount)
                        {
                            return RedirectToPage("RegisterConfirmation", new { email = Input.Email });
                        }
                        else
                        {
                            await _signInManager.SignInAsync(user, isPersistent: false);
                            return LocalRedirect(returnUrl);
                        }
                    }

                    foreach (var error in result.Errors)
                    {
                        ModelState.AddModelError(string.Empty, error.Description);
                    }
                }
            }
            // If we got this far, something failed, redisplay form
            ViewData["EmailExists"] = "Try another email that one is used";

            return Page();
}

그런 다음 sendgrid 사용자 및 키를 생성하고 CMD로 등록한 다음 이메일 보내기 작업을 생성했습니다.

public class EmailSender : IEmailSender
{
        public EmailSender(IOptions<AuthMessageSenderOptions>optionsAccessor)
        {
            Options = optionsAccessor.Value;
        }

        public AuthMessageSenderOptions Options { get; }

        public Task SendEmailAsync (string email , string subject , string message)
        {
            return Excute(Options.SendGridKey,subject,message,email);
        }

        private Task Excute(string apiKey, string subject, string message, string email)
        {
            var client = new SendGridClient(apiKey);
            var msg = new SendGridMessage()
            {
                From = new EmailAddress("[email protected]", "dary dress"),
                Subject = subject,
                PlainTextContent = message,
                HtmlContent = message
            };

            msg.AddTo(new EmailAddress(email));
            msg.SetClickTracking(false, false);

            return client.SendEmailAsync(msg);
        }
}

그런 다음 startup.cs에서

public IConfiguration Configuration { get; }

// This method gets called by the runtime. Use this method to add services to the container.
public void ConfigureServices(IServiceCollection services)
{
    services.AddDbContext<ApplicationDbContext>(options =>
          options.UseSqlServer(
                    Configuration.GetConnectionString("DefaultConnection")));
    services.AddIdentity<IdentityUser, IdentityRole>( options => options.SignIn.RequireConfirmedAccount = true)
                .AddDefaultUI()
                .AddDefaultTokenProviders()
                .AddEntityFrameworkStores<ApplicationDbContext>();
    services.AddControllersWithViews();
    services.AddRazorPages();
    services.AddMvc();
    services.AddTransient<IEmailSender, EmailSender>();
    services.Configure<AuthMessageSenderOptions>(Configuration);
    services.AddPaging();
    services.ConfigureApplicationCookie(o => {
                o.ExpireTimeSpan = TimeSpan.FromDays(5);
                o.SlidingExpiration = true;
            });
    services.AddMvc(options =>
            {
                options.Filters.Add(new RequireHttpsAttribute());
            });
    services.ConfigureApplicationCookie(options =>
            {
                options.AccessDeniedPath = new Microsoft.AspNetCore.Http.PathString("/Main/AccessDenied");
            });
}

하지만 등록 후 이메일 전송이 작동하지 않습니다. 이메일 확인이 필요한 몇 가지 단어를 제공하고 이메일을 확인하는 링크를 제공하지만 Gmail로 보내지 않습니다.

누구나 아이디어가 있습니까?

Microsoft https://docs.microsoft.com/en-us/aspnet/core/security/authentication/accconfirm?view=aspnetcore-3.1&tabs=visual-studio 에서이 설명서를 따랐습니다.

오마르 칼레드

"해결됨"내가 Sendgrid에게 물었고, 내 야후 이메일 (또는 gmail, ...)을 보낸 사람 이메일로 사용할 수 없다는 말을 들었습니다. 이것은 대답의 일부입니다. "Yahoo는 DMARC라는 이메일 보안 표준을 준수합니다. DMARC는 보낸 사람 도메인이 Yahoo 도메인이지만 승인되지 않은 도메인 서버 / 서비스에서 보낸 메시지를 거부하도록 이메일 제공 업체에 지시합니다." 그래서 내 메일 도메인을 사용해야합니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

Android에서 이메일을 어떻게 확인할 수 있습니까?

분류에서Dev

jQuery $ .post 메서드. 호출 된 cshtml 페이지에서 데이터를 요청합니다. 작동하는지 어떻게 확인할 수 있습니까?

분류에서Dev

jQuery $ .post 메서드. 호출 된 cshtml 페이지에서 데이터를 요청합니다. 작동하는지 어떻게 확인할 수 있습니까?

분류에서Dev

메일에 유효한 디지털 서명이 있는지 어떻게 확인할 수 있습니까?

분류에서Dev

배열이 변수에 할당되지 않았습니까? 어떻게 작동하며 정확히 무엇을하고 있습니까?

분류에서Dev

Flask의 url_for ()에서 정적 파일이 있는지 여부를 어떻게 확인할 수 있습니까?

분류에서Dev

nginx에 파일이 있는지 어떻게 확인할 수 있습니까? 그렇지 않으면 재 작성 규칙을 실행합니다.

분류에서Dev

'nice'가 작동하는지 어떻게 확인할 수 있습니까?

분류에서Dev

SortMode가 자동 일 때 DataGridView에서 정렬 된 열을 어떻게 확인할 수 있습니까?

분류에서Dev

지연된 위치 업데이트가 작동하는지 어떻게 확인할 수 있습니까?

분류에서Dev

지원되는 파일 시스템을 어떻게 나열 할 수 있습니까? 보다 정확하게는 NTFS와 같은 파일 시스템이 지원되는지 어떻게 확인할 수 있습니까?

분류에서Dev

파일에 정수만 포함되어 있는지 어떻게 확인할 수 있습니까?

분류에서Dev

Flutter의 합계 문제가 작동하지 않습니다. 내비게이션 바에 총 수입을 어떻게 표시 할 수 있습니까?

분류에서Dev

Powershell을 통해 사용자 계정 그룹이 있는지 어떻게 확인할 수 있습니까?

분류에서Dev

대상 검정이 올바르게 작동하지 않습니다. 어떻게 html에서 수정할 수 있습니까?

분류에서Dev

WPF. RadGridView. 어떤 컬럼이 선택되었는지 (정렬) 어떻게 알 수 있습니까? CurrentColumn 바인딩이 작동하지 않습니다.

분류에서Dev

함수를 호출하기 전에 빈 텍스트 필드와 이메일, 암호 정규식을 어떻게 확인할 수 있습니까?

분류에서Dev

세션 ID를 설정하고 PHP의 다음 페이지에서 어떻게 확인할 수 있습니까?

분류에서Dev

GridControl에서 보이는 열을 어떻게 지정할 수 있습니까?

분류에서Dev

Heroku에서 Imagetragick 취약점이 수정되었는지 어떻게 확인할 수 있습니까?

분류에서Dev

Node.js : 읽을 수있는 스트림이 끝에 있는지 어떻게 확인할 수 있습니까?

분류에서Dev

한 점이 다른 두 점으로 정의 된 선에 있는지 어떻게 확인할 수 있습니까?

분류에서Dev

소수 (뒤에 0)에 일정량의 숫자가 있는지 어떻게 확인할 수 있습니까?

분류에서Dev

"인라인"이 작동하는지 어떻게 알 수 있습니까?

분류에서Dev

이 코드에 다른 배열을 어떻게 추가 할 수 있습니까? 세미콜론 (;)을 주려고했지만 작동하지 않습니다.

분류에서Dev

특정 파일 유형이 디렉토리에 있는지 어떻게 확인할 수 있습니까?

분류에서Dev

http 요청에 ASP.Net Core 웹 API에서 쿼리 문자열이 없는지 어떻게 확인할 수 있습니까?

분류에서Dev

컨트롤을 사용할 때 게임이 작동하지 않습니다. 어떻게 수정합니까?

분류에서Dev

정전기 방지 손목띠가 작동하는지 어떻게 확인할 수 있습니까?

Related 관련 기사

  1. 1

    Android에서 이메일을 어떻게 확인할 수 있습니까?

  2. 2

    jQuery $ .post 메서드. 호출 된 cshtml 페이지에서 데이터를 요청합니다. 작동하는지 어떻게 확인할 수 있습니까?

  3. 3

    jQuery $ .post 메서드. 호출 된 cshtml 페이지에서 데이터를 요청합니다. 작동하는지 어떻게 확인할 수 있습니까?

  4. 4

    메일에 유효한 디지털 서명이 있는지 어떻게 확인할 수 있습니까?

  5. 5

    배열이 변수에 할당되지 않았습니까? 어떻게 작동하며 정확히 무엇을하고 있습니까?

  6. 6

    Flask의 url_for ()에서 정적 파일이 있는지 여부를 어떻게 확인할 수 있습니까?

  7. 7

    nginx에 파일이 있는지 어떻게 확인할 수 있습니까? 그렇지 않으면 재 작성 규칙을 실행합니다.

  8. 8

    'nice'가 작동하는지 어떻게 확인할 수 있습니까?

  9. 9

    SortMode가 자동 일 때 DataGridView에서 정렬 된 열을 어떻게 확인할 수 있습니까?

  10. 10

    지연된 위치 업데이트가 작동하는지 어떻게 확인할 수 있습니까?

  11. 11

    지원되는 파일 시스템을 어떻게 나열 할 수 있습니까? 보다 정확하게는 NTFS와 같은 파일 시스템이 지원되는지 어떻게 확인할 수 있습니까?

  12. 12

    파일에 정수만 포함되어 있는지 어떻게 확인할 수 있습니까?

  13. 13

    Flutter의 합계 문제가 작동하지 않습니다. 내비게이션 바에 총 수입을 어떻게 표시 할 수 있습니까?

  14. 14

    Powershell을 통해 사용자 계정 그룹이 있는지 어떻게 확인할 수 있습니까?

  15. 15

    대상 검정이 올바르게 작동하지 않습니다. 어떻게 html에서 수정할 수 있습니까?

  16. 16

    WPF. RadGridView. 어떤 컬럼이 선택되었는지 (정렬) 어떻게 알 수 있습니까? CurrentColumn 바인딩이 작동하지 않습니다.

  17. 17

    함수를 호출하기 전에 빈 텍스트 필드와 이메일, 암호 정규식을 어떻게 확인할 수 있습니까?

  18. 18

    세션 ID를 설정하고 PHP의 다음 페이지에서 어떻게 확인할 수 있습니까?

  19. 19

    GridControl에서 보이는 열을 어떻게 지정할 수 있습니까?

  20. 20

    Heroku에서 Imagetragick 취약점이 수정되었는지 어떻게 확인할 수 있습니까?

  21. 21

    Node.js : 읽을 수있는 스트림이 끝에 있는지 어떻게 확인할 수 있습니까?

  22. 22

    한 점이 다른 두 점으로 정의 된 선에 있는지 어떻게 확인할 수 있습니까?

  23. 23

    소수 (뒤에 0)에 일정량의 숫자가 있는지 어떻게 확인할 수 있습니까?

  24. 24

    "인라인"이 작동하는지 어떻게 알 수 있습니까?

  25. 25

    이 코드에 다른 배열을 어떻게 추가 할 수 있습니까? 세미콜론 (;)을 주려고했지만 작동하지 않습니다.

  26. 26

    특정 파일 유형이 디렉토리에 있는지 어떻게 확인할 수 있습니까?

  27. 27

    http 요청에 ASP.Net Core 웹 API에서 쿼리 문자열이 없는지 어떻게 확인할 수 있습니까?

  28. 28

    컨트롤을 사용할 때 게임이 작동하지 않습니다. 어떻게 수정합니까?

  29. 29

    정전기 방지 손목띠가 작동하는지 어떻게 확인할 수 있습니까?

뜨겁다태그

보관