Chcę wysłać e-mail z mojej aplikacji i napisałem następujący kod do wysyłania poczty
MailMessage msg = new MailMessage();
msg.From = new MailAddress("mymailid");
msg.To.Add("receipientid");
msg.Subject = "test";
msg.Body = "Test Content";
msg.Priority = MailPriority.High;
SmtpClient client = new SmtpClient();
client.Credentials = new NetworkCredential("mymailid", "mypassword", "smtp.gmail.com");
client.Host = "smtp.gmail.com";
client.Port = 587;
client.DeliveryMethod = SmtpDeliveryMethod.Network;
client.EnableSsl = true;
client.UseDefaultCredentials = true;
client.Send(msg);
Używam go na hoście lokalnym, więc jaki błąd robię, aby go wysłać.
Kiedy wysyłam przycisk, wyświetla się błąd, taki jak
Serwer SMTP wymaga bezpiecznego połączenia lub klient nie został uwierzytelniony. Odpowiedź serwera: 5.5.1 Wymagane uwierzytelnienie.
Kod w pliku Web.config
<appSettings>
<add key="webpages:Version" value="2.0.0.0" />
<add key="webpages:Enabled" value="false" />
<add key="PreserveLoginUrl" value="true" />
<add key="ClientValidationEnabled" value="true" />
<add key="UnobtrusiveJavaScriptEnabled" value="true" />
<add key="smtpServer" value="smtp.gmail.com" />
<add key="EnableSsl" value = "true"/>
<add key="smtpPort" value="587" />
<add key="smtpUser" value="[email protected]" />
<add key="smtpPass" value="mypassword" />
<add key="adminEmail" value="[email protected]" />
</appSettings>
<system.net>
<mailSettings>
<smtp from="[email protected]">
<network host="smtp.gmail.com" password="mypassword" port="587" userName="[email protected]" enableSsl="true"/>
</smtp>
</mailSettings>
</system.net>
co powinienem zrobić, aby rozwiązać ten błąd i wysłać wiadomość?
Odpowiedzi:
Najpierw sprawdź problemy związane z bezpieczeństwem Gmaila. Być może włączyłeś podwójne uwierzytelnianie w Gmailu. Sprawdź również skrzynkę odbiorczą Gmaila, jeśli otrzymujesz alerty bezpieczeństwa. W takich przypadkach sprawdź inną odpowiedź @mjb, jak poniżej
Poniżej znajduje się bardzo ogólna rzecz, którą zawsze najpierw sprawdzam pod kątem takich problemów
ustaw go na false.
Zwróć uwagę na odpowiedź @Joe Kinga - musisz ustawić client.UseDefaultCredentials przed ustawieniem klienta.
źródło
Mam ten sam problem.
Znalazłem takie rozwiązanie:
Google może blokować próby logowania z niektórych aplikacji lub urządzeń, które nie korzystają z nowoczesnych standardów zabezpieczeń. Ponieważ te aplikacje i urządzenia są łatwiejsze do włamania, zablokowanie ich pomaga zwiększyć bezpieczeństwo konta.
Oto przykłady aplikacji, które nie obsługują najnowszych standardów bezpieczeństwa:
Dlatego musisz włączyć mniej bezpieczne logowanie (lub dostęp do mniej bezpiecznych aplikacji ) na swoim koncie Google.
Po zalogowaniu się na konto Google przejdź do:
https://www.google.com/settings/security/lesssecureapps
lub
https://myaccount.google.com/lesssecureapps
W C # możesz użyć następującego kodu:
-------------------
Informacje udostępnione przez Michaela Freidgeima w obszarze komentarzy poniżej:
Podobna odpowiedź ze zrzutami ekranu https://stackoverflow.com/a/32457468/52277
źródło
Upewnij się, że ustawiłeś
SmtpClient.Credentials
po telefonieSmtpClient.UseDefaultCredentials = false
.Kolejność jest ważna, ponieważ ustawienie
SmtpClient.UseDefaultCredentials = false
zostanie zresetowaneSmtpClient.Credentials
do wartości null.źródło
Szukałem i próbowałem różnych rzeczy godzinami. Podsumowując, musiałem wziąć pod uwagę następujące punkty:
smtp.gmail.com
zamiastsmtp.google.com
client.UseDefaultCredentials = false;
przed ustawieniem poświadczeńclient.EnableSsl = true;
Jeśli te kroki nie pomogły, sprawdź tę odpowiedź .
Być może znajdziesz też coś przydatnego w tym FAQ System.Net.Mail .
źródło
Spróbuj zalogować się na swoje konto Gmail. blokuje się, jeśli wysyłasz e-maile przy użyciu Gmaila SMTP. Nie znam limitu e-maili, które możesz wysłać, zanim zostanie zablokowany, ale jeśli zalogujesz się raz, to działa ponownie z kodu. upewnij się, że ustawienia webconfig są dobre.
źródło
Spróbuj w ten sposób, właśnie wprowadziłem kilka drobnych zmian:
Pokaż również swój plik app.config, jeśli masz tam ustawienia poczty.
źródło
spróbuj włączyć zezwolenie na mniej bezpieczny dostęp do aplikacji.
Tutaj możesz włączyć mniej bezpieczną aplikację po zalogowaniu się za pomocą Gmaila.
https://myaccount.google.com/lesssecureapps
Dzięki.
źródło
Napotkałem ten sam problem, nawet jeśli ustawiłem „UseDefaultCredentials” na false. Później odkryłem, że główną przyczyną jest włączenie na moim koncie „weryfikacji dwuetapowej”. Po wyłączeniu problem zniknął.
źródło
Włącz mniej bezpieczną aplikację z tego linku i boom ...
źródło
Upewnij się, że dostęp do mniej bezpiecznej aplikacji jest dozwolony.
źródło
Poniżej znajduje się mój kod. Też miałem ten sam błąd, ale problem polegał na tym, że podałem błędne hasło. Poniższy kod będzie działał idealnie ... spróbuj
Możesz to odesłać w Wysyłanie poczty
źródło
Jeśli jest to nowe konto Google, musisz wysłać wiadomość e-mail (pierwszą) za pośrednictwem zwykłego interfejsu użytkownika. Następnie możesz używać aplikacji / robota do wysyłania wiadomości.
źródło
Należy rozważyć określenie danych konfiguracyjnych SMTP w pliku konfiguracyjnym i nie nadpisywać ich w kodzie - patrz dane konfiguracyjne SMTP na stronie http://www.systemnetmail.com/faq/4.1.aspx
źródło
Kilka razy napotkałem ten sam problem. Po włączeniu mniej bezpiecznej opcji aplikacji problem został rozwiązany. Włącz mniej bezpieczną aplikację tutaj: https://myaccount.google.com/lesssecureapps
mam nadzieję, że to pomoże.
źródło
Jeśli jesteś w środowisku testowym i nie chcesz konfigurować ustawień zabezpieczeń, musisz zezwolić na mniej bezpieczne aplikacje za pośrednictwem. ten link w Gmailu.
https://myaccount.google.com/lesssecureapps
źródło
Niektóre serwery smtp (bezpieczne) wymagają podania zarówno nazwy użytkownika, jak i adresu e-mail, jeśli jest to gmail, najprawdopodobniej jest to problem „Mniej bezpiecznego logowania”, który musisz rozwiązać, w przeciwnym razie możesz spróbować:
Zauważ, że e-mail od i nazwa użytkownika są różne, w przeciwieństwie do niektórych implementacji, które odnoszą się do nich jako takie same.
wywołanie tej metody można zrobić w następujący sposób:
źródło
Po włączeniu mniej bezpiecznej opcji i wypróbowaniu innych rozwiązań, jeśli nadal masz ten sam problem, spróbuj użyć tego przeciążenia:
zamiast:
źródło
Utworzyłem dziś rano subskrypcję Microsoft 365 Developer (E5) i użyłem jej do wysłania testowej wiadomości e-mail przy użyciu następujących ustawień
Na początku to nie zadziałało, ponieważ ciągle otrzymywałem ten komunikat o błędzie z wyjątkiem zgłaszanym przez ten kod. Następnie spędziłem ponad 4 godziny na zabawie z ustawieniami centrum administracyjnego platformy Microsoft 365 i czytaniu artykułów, aby rozwiązać problem. Ostatecznie zmieniłem hasło do centrum administracyjnego platformy Microsoft 365 i działało to jak marzenie. Warto więc spróbować zmienić hasło, gdy pojawi się taka wiadomość, zanim pomyślisz o jakimś zaawansowanym rozwiązaniu.
Zwróć uwagę, że hasło nie było na pewno nieprawidłowe, ponieważ logowałem się na moje konto Microsoft 365 bez żadnych problemów. Jednak zmiana hasła rozwiązała problem.
źródło
Miałem również do czynienia z problemem typu „Serwer SMTP wymaga bezpiecznego połączenia lub klient nie został uwierzytelniony. Odpowiedź serwera brzmiała: 5.5.0 Wymagane uwierzytelnienie ”, a następnie przeszedł przez tak wiele materiałów internetowych, ale nie pomogło mi to w pełni. Jak to rozwiązałem
step1: smtp.gmail.com to serwer gmail, więc przejdź do ustawień Gmaila na swoim koncie-> kliknij zobacz wszystkie ustawienia-> Przekazywanie i IMAP / POP-> sprawdź, czy pop i imap są włączone, jeśli nie, włącz je-> Zapisz zmiany. step2-kliknij swoje zdjęcie profilowe w Gmailu-> kliknij Zarządzaj kontem Google-> przejdź do zakładki bezpieczeństwa-> sprawdź dostęp do mniej bezpiecznych aplikacji (ta opcja będzie dostępna, jeśli nie zdecydowałeś się na weryfikację dwuetapową) -> domyślnie Google ustawi to jako wyłączone, umożliwi używanie Twojego prawdziwego hasła do Gmaila do wysyłania wiadomości e-mail. Uwaga: - Zezwolenie na dostęp do Gmaila dla mniej bezpiecznych aplikacji może być dla Ciebie niebezpieczne, więc nie polecam tego
krok 3: -jeśli Twoje konto ma włączoną weryfikację dwuetapową lub chcesz użyć hasła innego niż Gmail Prawdziwe hasło za pomocą hasła aplikacji, spróbuj tego: - kliknij swoje zdjęcie profilowe Gmaila -> kliknij Zarządzaj kontem Google -> przejdź do bezpieczeństwa tab-> wyszukaj APP PASSWORD-> wybierz dowolną podaną nazwę aplikacji-> wybierz dowolną nazwę urządzenia-> kliknij generuj-> skopiuj 16-cyfrowe hasło i wklej je do swojej aplikacji, w której musisz wpisać hasło do Gmaila zamiast Twoje prawdziwe hasło do Gmaila.
źródło