Z jakiegoś powodu ani zaakceptowana odpowiedź, ani żadna inna nie działa dla mnie w przypadku „ Wysyłania wiadomości e-mail w .NET przez Gmail ”. Dlaczego mieliby nie działać?
AKTUALIZACJA: Próbowałem wszystkich odpowiedzi (zaakceptowanych i innych) w drugim pytaniu, ale żadna z nich nie działa.
Chciałbym tylko wiedzieć, czy to działa na kogokolwiek innego, w przeciwnym razie Google mógł coś zmienić (co zdarzyło się wcześniej).
Kiedy próbuję użyć fragmentu kodu SmtpDeliveryMethod.Network
, szybko otrzymuję wyjątek SmtpException podczas wysyłania (wiadomość). Wiadomość jest
Serwer SMTP wymaga bezpiecznego połączenia lub klient nie został uwierzytelniony.
Odpowiedź serwera brzmiała:
5.5.1 Wymagane uwierzytelnienie. Dowiedz się więcej na „<- poważnie, to się tam kończy.
AKTUALIZACJA:
To pytanie zadałem dawno temu, a akceptowaną odpowiedzią jest kod, którego używałem wiele razy w różnych projektach.
Podjąłem niektóre pomysły zawarte w tym poście i innych projektach EmailSender, aby utworzyć projekt EmailSender w Codeplex . Jest przeznaczony do testowania i obsługuje moje ulubione usługi SMTP, takie jak GoDaddy i Gmail.
Odpowiedzi:
CVertex, sprawdź kod i, jeśli to niczego nie ujawni, opublikuj go. Właśnie włączałem to na testowej stronie ASP.NET, nad którą pracowałem, i działa.
Właściwie w pewnym momencie miałem problem z moim kodem. Nie zauważyłem go, dopóki nie miałem prostszej wersji programu konsoli i nie zobaczyłem, że działa (bez zmian po stronie Gmaila, ponieważ martwiłeś się). Poniższy kod działa tak samo jak przykłady, o których mowa:
Mam również działa przy użyciu kombinacji web.config, http://msdn.microsoft.com/en-us/library/w355a94k.aspx i kodu (ponieważ
EnableSsl
w pliku konfiguracyjnym nie ma dopasowania :().źródło
NASTĘPUJĄCE PRAWIE JEST NA PEWNO ODPOWIEDŹ NA TWOJE PYTANIE, JEŻELI WSZYSTKIE INNE SĄ AWARIA :
Otrzymałem dokładnie ten sam błąd, okazuje się, że nowy algorytm pomiaru siły hasła Google zmienił się, uznając moje obecne hasło za zbyt słabe i nie mówiąc mi nic o tym (nawet wiadomość lub ostrzeżenie) ... Jak to odkryłem ? Cóż, postanowiłem zmienić hasło, aby zobaczyć, czy to pomogłoby (próbowałem wszystkiego innego bezskutecznie), a kiedy zmieniłem hasło, zadziałało!
Następnie, dla eksperymentu, próbowałem zmienić hasło z powrotem na poprzednie, aby zobaczyć, co się stanie, a Gmail nie pozwolił mi na to, powołując się na powód „przepraszamy, nie możemy pozwolić ci zapisać tej zmiany jako wybranej hasło jest za słabe ”i nie pozwoliłbym wrócić do mojego starego hasła. Pomyślałem, że to pomyłka, ponieważ albo a) musisz zmienić hasło raz na x miesięcy lub b). jak powiedziałem wcześniej, ich algorytmy siły hasła uległy zmianie i dlatego słabe hasło, które otrzymałem, nie zostało zaakceptowane, mimo że nie powiedzieli nic na ten temat podczas próby zalogowania się NIGDY! Ten (numer 2) jest najbardziej prawdopodobnym scenariuszem, ponieważ moje słabe hasło miało około 4 miesięcy i pozwoliło mi go używać w Gmailu.
Szkoda, że nic o tym nie powiedzieli, ale ma to sens. Ponieważ większość przechwyconych wiadomości e-mail jest zalogowanych przy użyciu oprogramowania spoza Gmaila i domyślam się, że musisz mieć silniejsze hasło, jeśli chcesz używać Gmaila poza środowiskiem Gmaila.
Mam nadzieję, że to pomoże!
źródło
Oprócz innych powyższych kroków rozwiązywania problemów, chciałbym również dodać, że jeśli włączyłeś uwierzytelnianie dwuskładnikowe (znane również jako weryfikacja dwuetapowa ) na swoim koncie Gmail, musisz wygenerować hasło aplikacji i użyć tego nowo wygenerowane hasło do uwierzytelnienia przez SMTP .
Aby je utworzyć, odwiedź: https://www.google.com/settings/ i wybierz Autoryzuj aplikacje i witryny, aby wygenerować hasło.
źródło
Link do ustawień Gmaila
źródło
Mam również problemy z wysyłaniem wiadomości e-mail z mojego konta Gmail, które były spowodowane kilkoma wyżej wymienionymi sytuacjami. Oto podsumowanie, w jaki sposób działam i jednocześnie zachowuję elastyczność:
A teraz, gdy chcesz wysyłać wiadomości e-mail, wystarczy zadzwonić
SSLMail.SendMail
:np. na stronie z kontrolką PasswordRecovery:
Lub w dowolnym miejscu kodu możesz zadzwonić:
Mam nadzieję, że to pomoże każdemu, kto trafi na ten post! (Użyłem VB.NET, ale myślę, że konwersja go na dowolny język .NET jest banalna.)
źródło
Jeśli pojawi się błąd typu „Serwer SMTP wymaga bezpiecznego połączenia lub klient nie został uwierzytelniony. Odpowiedź serwera brzmiała: Wymagane jest uwierzytelnianie 5.5.1. Dowiedz się więcej na stronie„ jak otrzymam wcześniej, upewnij się, że linia została
SMTPClientObj.UseDefaultCredentials = False
uwzględniona i ta linia powinien przedSMTPClientObj.Credentials
.Próbowałem zmienić te 2 wiersze w odwrotny sposób i zwrócił błąd Wymagane uwierzytelnienie 5.5.1 .
źródło
Och ... To niesamowite ... Po pierwsze Nie mogłem wysłać e-maila z żadnego powodu. Ale po zmianie sekwencji tych dwóch wierszy, jak poniżej, działa idealnie.
Mam nadzieję, że to pomoże!!! :)
źródło
Problem nie polega na technicznej możliwości wysyłania za pośrednictwem Gmaila. To działa w większości sytuacji. Jeśli nie możesz wysłać maszyny do wysłania, jest to zwykle spowodowane tym, że maszyna nie została przynajmniej raz uwierzytelniona przy pomocy człowieka.
Problemem, z którym zmaga się większość użytkowników, jest to, że Google cały czas decyduje się na zmianę limitów wychodzących. Zawsze powinieneś dodawać kod obronny do swojego rozwiązania. Jeśli zaczniesz widzieć błędy, zmniejsz prędkość wysyłania i po prostu przestań wysyłać na chwilę. Jeśli będziesz próbował wysyłać wiadomości, Google czasami wydłuży czas opóźnienia, zanim będziesz mógł wysłać wiadomość ponownie.
To, co zrobiłem w moim obecnym systemie, to wysłanie z 1,5-sekundowym opóźnieniem między każdą wiadomością. Jeśli pojawią się jakieś błędy, zatrzymaj się na 5 minut, a następnie zacznij od nowa. Zwykle działa to i pozwala na wysyłanie do limitów konta (ostatnio sprawdziłem, że było to 2000 za pierwsze logowanie klientów dziennie).
źródło
Proste kroki, aby to naprawić:
1) Zaloguj się do Gmaila
2) Przejdź do tej strony https://www.google.com/settings/security/lesssecureapps i ustaw „Włącz”
źródło
Miałem ten sam problem, ale okazało się, że moja ochrona przed wirusami blokowała wychodzące wiadomości „spamowe”. Wyłączenie tego pozwoliło mi użyć portu 587 do wysyłania wiadomości e-mail SMTP za pośrednictwem Gmaila
źródło
Jeśli nic więcej tu nie działało, być może musisz zezwolić na dostęp do konta Gmail z aplikacji innych firm. To był mój problem. Aby zezwolić na dostęp, wykonaj następujące czynności:
To działało dla mnie, mam nadzieję, że zadziała dla kogoś innego!
źródło
Nie jestem pewien, która wersja .NET jest do tego wymagana, ponieważ eglasius wspomniał, że nie ma pasującego
enableSsl
ustawienia (używam .NET 4.0, ale podejrzewam, że działa w .NET 2.0 lub nowszej), ale ta konfiguracja właśnie działała dla ja (i nie wymaga użycia żadnej konfiguracji programowej):Może być konieczne włączenie POP lub IMAP na koncie Gmail: https://mail.google.com/mail/?shva=1#settings/fwdandpop
Najpierw polecam wypróbowanie go z normalnym klientem poczty ...
źródło
@Andres Pompiglio: Tak, zgadza się, musisz zmienić hasło przynajmniej raz .. ten kod działa dobrze:
ORAZ możesz nawiązać połączenie z funkcją, używając:
źródło
Korzystałem z korporacyjnego połączenia VPN. To był powód, dla którego nie mogłem wysłać e-maila z mojej aplikacji. Działa, jeśli rozłączę się z VPN.
źródło
Odkryłem również, że konto, z którego się logowałem, zostało z jakiegoś powodu dezaktywowane przez Google. Po zresetowaniu hasła (do tego samego, co kiedyś), mogłem dobrze wysłać e-maile. Otrzymywałem również komunikat 5.5.1.
źródło
Próbowałem też wielu rozwiązań, ale wprowadzę kilka zmian, to zadziała
z smtpclient powyższe parametry działają w Gmailu
źródło
Otrzymałem ten sam błąd i żadne z powyższych rozwiązań nie pomogło.
Mój problem polegał na tym, że uruchamiałem kod ze zdalnego serwera, który nigdy nie był używany do logowania się na konto Gmail.
Otworzyłem przeglądarkę na zdalnym serwerze i stamtąd zalogowałem się do Gmaila. Zadał pytanie bezpieczeństwa, aby zweryfikować, że to ja, ponieważ była to nowa lokalizacja. Po sprawdzeniu bezpieczeństwa udało mi się uwierzytelnić za pomocą kodu.
źródło
Włącz mniej bezpieczne aplikacje dla swojego konta: https://www.google.com/settings/security/lesssecureapps
źródło
Wystąpił ten sam błąd ( „Serwer SMTP wymaga bezpiecznego połączenia lub klient nie został uwierzytelniony. Odpowiedź serwera brzmiała: Wymagane jest uwierzytelnianie 5.5.1. Więcej informacji na stronie” ) i okazało się, że używałem niewłaściwego hasła. Poprawiłem dane logowania i wysłałem je poprawnie.
Wiem, że jest późno, ale może to pomoże komuś innemu.
źródło
Kolejną rzeczą, którą znalazłem, jest to, że musisz zmienić hasło przynajmniej raz. I spróbuj użyć hasła poziomu bezpiecznego (nie używaj tego samego użytkownika co hasło, 123456 itp.)
źródło
Jeszcze jedno możliwe rozwiązanie dla Ciebie. Miałem podobne problemy z połączeniem się z Gmailem przez IMAP. Po wypróbowaniu wszystkich rozwiązań, które napotkałem, o których przeczytasz tutaj i gdzie indziej na SO (np. Włącz IMAP, włącz mniej bezpieczny dostęp do swojej poczty, używając https://accounts.google.com/b/0/displayunlockcaptcha i itd.), ponownie założyłem nowe konto Gmail.
W moim pierwotnym teście, pierwszym koncie Gmail, które utworzyłem, podłączyłem się do mojego głównego konta Gmail. Spowodowało to nieprawidłowe działanie, gdy Google odnosił się do niewłaściwego konta. Na przykład z uruchomioną https://accounts.google.com/b/0/displayunlockcaptcha otworzyło moje główne konto zamiast konta, które utworzyłem w tym celu.
Kiedy więc utworzyłem nowe konto i nie podłączyłem go do mojego konta głównego, po wykonaniu wszystkich odpowiednich kroków opisanych powyżej, stwierdziłem, że działa dobrze!
Jeszcze tego nie potwierdziłem (tj. Powielono), ale najwyraźniej zrobiło to dla mnie ... mam nadzieję, że to pomoże.
źródło
Zestaw
przed
źródło
Istnieje co najmniej jeden powód tego błędu.
Zaloguj się za pomocą Gmaila (lub dowolnego innego, jeśli) w systemie lokalnym.
Sprawdź także, czy aplikacja jest mniej bezpieczna i ustaw ją na „Włącz”. Oto link do GMAIL. https://www.google.com/settings/security/lesssecureapps
sprawdź EnableSsl w swoim kodzie e-mail, a także ustaw go na true.
Sprawdź także, którego portu używasz obecnie. 25 jest globalne, ale możesz to sprawdzić także dla innych, takich jak 587. sprawdź tutaj. Czy cała komunikacja SMTP odbywa się w wieku powyżej 25 lat?
JEŚLI JESTEŚ NA PILOCIE : sprawdź odpowiedź Vlad Tamas powyżej.
źródło
Możesz także połączyć się przez port 465, ale z powodu pewnych ograniczeń przestrzeni nazw System.Net.Mail może być konieczna zmiana kodu. Wynika to z faktu, że przestrzeń nazw nie umożliwia nawiązywania niejawnych połączeń SSL. Jest to omówione na stronie http://blogs.msdn.com/b/webdav_101/archive/2008/06/02/system-net-mail-with-ssl-to-authenticate-against-port-465.aspx , a ja podali przykład użycia CDO (Collaborative Data Object) w innej dyskusji ( GMail SMTP przez błędy C # .Net na wszystkich portach ).
źródło
Miałem ten problem rozwiązany. Najwyraźniej ten komunikat jest używany w wielu typach błędów. Mój problem polegał na tym, że osiągnąłem maksymalnie 500 wysłanych maili.
zaloguj się na konto i ręcznie spróbuj wysłać wiadomość. Jeśli limit zostanie osiągnięty, poinformuje Cię o tym
źródło
Jeśli masz na koncie Gmail wyższy poziom weryfikacji dwuetapowej, musisz wygenerować hasło do aplikacji. https://support.google.com/accounts/answer/185833?p=app_passwords_sa&hl=pl&visit_id=636903322072234863-1319515789&rd=1 Wybierz Jak wygenerować opcję hasła aplikacji i postępuj zgodnie z podanymi krokami. Skopiuj i wklej wygenerowane hasło do aplikacji, ponieważ nie będzie można go odzyskać po kliknięciu GOTOWE.
źródło
źródło
Zmień hasło do Gmaila i spróbuj ponownie, potem powinno działać.
Nie wiem dlaczego, ale za każdym razem, gdy zmieniasz hosting, musisz zmienić hasło.
źródło