Gmail Hatası: SMTP sunucusu güvenli bir bağlantı gerektiriyor veya istemcinin kimliği doğrulanmadı. Sunucu yanıtı şuydu: 5.5.1 Kimlik Doğrulaması Gerekli


260

E-posta göndermek için aşağıdaki kodu kullanıyorum. Kod yerel Makinemde düzgün çalışıyor. Ama Üretim sunucusunda hata mesajı alıyorum

var fromAddress = new MailAddress("mymailid@gmail.com");
var fromPassword = "xxxxxx";
var toAddress = new MailAddress("yourmailid@yourdoamain.com");

string subject = "subject";
string body = "body";

System.Net.Mail.SmtpClient smtp = new System.Net.Mail.SmtpClient
{
    Host = "smtp.gmail.com",
    Port = 587,
    EnableSsl = true,
    DeliveryMethod = System.Net.Mail.SmtpDeliveryMethod.Network,
    UseDefaultCredentials = false,
    Credentials = new NetworkCredential(fromAddress.Address, fromPassword)       
};

using (var message = new MailMessage(fromAddress, toAddress)
{
    Subject = subject,
    Body = body
})

smtp.Send(message);

Ve Gmail klima cihazımda kodu üretim sunucusundan çalıştırdıktan sonra aşağıdaki e-postayı aldım

Selam ,

Birisi kısa süre önce Google Hesabınızda mymailid@gmail.com adresinde oturum açmak için şifrenizi kullandı. Bu kişi e-posta, istemci veya mobil cihaz gibi bir uygulama kullanıyordu.

Hesabınıza erişmeye çalışan bir korsanının olması durumunda oturum açma girişimini engelledik. Lütfen oturum açma girişiminin ayrıntılarını inceleyin:

3 Ocak 2014 Cuma 13:56:08 saat UTC IP Adresi: xxx.xx.xx.xxx (abcd.net.) Konum: Philadelphia PA, Philadelphia, PA, ABD

Bu oturum açma girişimini tanımıyorsanız, başka biri hesabınıza erişmeye çalışıyor olabilir. Hesabınızda oturum açmalı ve hemen şifrenizi sıfırlamalısınız.

Şifreyi yenile

Bu sizseniz ve hesabınıza erişmekte sorun yaşıyorsanız, http://support.google.com/mail?p=client_login adresinde listelenen sorun giderme adımlarını tamamlayın.

Saygılarımla, Google Hesapları ekibi


sunucusuna erişiminiz var mı
Arshad

Üretim sunucusuna erişimim yok
vcs

2 adımlı doğrulamayı kapatın ..
Mangesh


1
Ayrıca, google "Captcha" işlevinin devre dışı bırakıldığından emin olun - komut dosyasını uzak bir sunucuda çalıştırıyorsanız bu gerekli olabilir (yerel makinede çalışırken gerekli değildir): accounts.google.com/DisplayUnlockCaptcha
Jens

Yanıtlar:


197

Bu genellikle farklı bir saat diliminden veya IP Adresi Bilgisayarından oturum açmayı denediğinizde olur. Üretim sunucunuz ve kullandığınız posta kimliği farklı saat dilimlerinde. Bu iki çözümden birini seçin:

1) Üretim sunucusuna uzaktan erişim yoluyla giriş yapın ve kimlik bilgilerinizle bir kez gmail'de oturum açın. Onay isteyecek, onaylayacak ve çıkış yapacaklar.

Veya 2) gmail'i yerel bilgisayarınıza giriş yapın, bu Bağlantıyı takip edin ve bu etkinliği gözden geçirin ve uygun işlemleri yapın.


21
Küçük bir yorum: security.google.com/settings/security/activity adresine gidin ve burada kodunuzdan engellenen bağlantı göreceksiniz. Onlara izin verin ve bu durumda yardımcı olacaktır.
Alex Zhukovskiy

68
Bu da çok yardımcı olacaktır: google.com/settings/security/lesssecureapps
George

Evet, gmail hesabı için nedeni 2 adımlı doğrulamanın açık olması. Uygulama / Cihaz'ı seçin ve Oluştur düğmesi'ni tıklayın support.google.com/accounts/answer/185833
smily


8
Ayrıca, google "Captcha" nın devre dışı bırakıldığından emin olun - komut dosyasını uzak bir sunucuda çalıştırıyorsanız bu gerekli olabilir (yerel makinede çalışırken gerekli değildir): accounts.google.com/DisplayUnlockCaptcha
Jens

301

Koddan posta göndermeye çalıştığınızda ve "SMTP sunucusu güvenli bir bağlantı gerektiriyorsa veya istemcinin kimliği doğrulanmadı. Sunucu yanıtı şuydu: 5.5.1 Kimlik Doğrulaması Gerekli" hatasını gördüğünüzde, aşağıdaki durumlarda hata oluşabilir.

durum 1: şifre yanlış olduğunda

durum 2: bazı Uygulamalardan giriş yapmaya çalıştığınızda

durum 3: saat diliminiz / etki alanınız / bilgisayarınız dışındaki etki alanından oturum açmaya çalıştığınızda (Bu, koddan posta gönderirken çoğu senaryoda geçerlidir)

Her biri için bir çözüm var

durum 1 için çözüm: Doğru şifreyi girin.

durum 2 için çözüm 1 : https://www.google.com/settings/security/lesssecureapps bağlantı adresindeki güvenlik ayarlarına gidin ve daha az güvenli uygulamaları etkinleştirin. Böylece tüm uygulamalardan giriş yapabilirsiniz.

durum 2 için çözüm 2 : (bkz. https://stackoverflow.com/a/9572958/52277 ) iki faktörlü kimlik doğrulamayı etkinleştirin (iki adımlı doğrulama olarak da bilinir) ve ardından uygulamaya özel bir şifre oluşturun. SMTP üzerinden kimlik doğrulaması yapmak için yeni oluşturulan şifreyi kullanın.

durum 3 için çözüm 1: (Bu yardımcı olabilir) etkinliği gözden geçirmeniz gerekir. ancak etkinliğin gözden geçirilmesi, en son güvenlik standartları nedeniyle yararlı olmaz, bağlantı yararlı olmaz. Bu yüzden aşağıdaki davayı deneyin.

durum 3 için çözüm 2 : Kodunuzu üretim sunucusunda bir yerde barındırdıysanız ve üretim sunucusuna erişiminiz varsa, üretim sunucusuna uzak masaüstü bağlantısını alıp üretim sunucusunun tarayıcısından bir kez oturum açmayı deneyin. Bu, google'da oturum açmak için bir heyecan ekler ve koddan giriş yapmanıza izin verilir.

Peki ya üretim sunucusuna erişiminiz yoksa. çözümü deneyin 3

durum 3 için çözüm 3: Google hesabınız için diğer saat diliminden / ip adresinden oturum açmayı etkinleştirmeniz gerekir.

bunu yapmak için https://g.co/allowaccess bağlantısını takip edin ve devam et düğmesini tıklayarak erişime izin verin.

Ve bu kadar. Hadi bakalım. Artık herhangi bir bilgisayardan ve herhangi bir uygulama yoluyla google hesabınıza giriş yapabilirsiniz.


10
Çözüm 2! Seni küçük güzellik!
George Harnwell

2
lesssecureapps bağlantı yukarıdaki yardımcı :)
Gautam Jain

Vay canına, bu kabul edilmiş cevap olarak işaretlenmelidir.
Nic


1
Durum 3 için Çözüm 2 - benim için bir cazibe gibi çalıştı. Teşekkürler.
ss_mj

106

Bu bir güvenlik sorunudur, Gmail varsayılan olarak özel uygulamalardan e-posta hesabınıza erişimi engeller. Uygulamanızdan girişi kabul edecek şekilde ayarlayabilirsiniz.

E-postanıza Giriş Yaptıktan Sonra BURAYA TIKLAYIN

Bu sizi bir sonraki sayfaya götürür

Daha Az Güvenli Uygulamalar Sayfası


1
Ayrıca, özel bir alan adınız varsa, kullanıcıların daha az güvenli uygulamalara erişime izin vermek için önce alan adı yöneticisi tarafından etkinleştirilmesi gerekir. Bir alan adı yöneticisiyseniz, bu admin.google.com/AdminHome#ServiceSettings/…
user551113

2
Bu cevap harika. Mucizevi şekilde çalışır. Teşekkür ederim.
Thomas.Benz

24

Bugün burada her çözümü denemek için birkaç saat geçirdikten sonra hala bu hatayı geçemedim. Gmail'i bu şekilde birçok kez kullandım, bu yüzden aptalca bir şey olduğunu biliyordum, ancak sorunu çözdüğüm hiçbir şey yoktu. Sonunda benim durumumda çözümün karşısında tökezledim, bu yüzden paylaşacağımı düşündüm.

İlk olarak, yukarıdaki cevapların çoğu da gereklidir, ancak benim durumumda, SmtpClientsınıfı oluştururken kodun sıralanması basit bir konuydu .

Aşağıdaki bu ilk kod snippet'inde Credentials = credssatırın nerede olduğuna dikkat edin . Bu uygulama, başka her şeyi düzgün bir şekilde ayarlamış olsanız bile bu soruda başvurulan hatayı oluşturur.

System.Net.Mail.SmtpClient client = new System.Net.Mail.SmtpClient
{
    Host = Emailer.Host,
    Port = Emailer.Port,
    Credentials = creds,
    EnableSsl = Emailer.RequireSSL,
    UseDefaultCredentials = false,
    DeliveryMethod = System.Net.Mail.SmtpDeliveryMethod.Network
}

Ancak, Kimlik Bilgileri ayarlayıcı çağrısını en alta taşırsanız, e-posta hatasız olarak gönderilir. Ben yani çevreleyen kod ... ... kullanıcı adı / şifre vb Açıkçası hiçbir değişiklik yapılmış ya EnableSSL, UseDefaultCredentials, or the DeliveryMethodbağlıdır CredentialsGerçi hangisi dışarı rakama tüm test etmedi ... ilk varlık kümesi .

System.Net.Mail.SmtpClient client = new System.Net.Mail.SmtpClient
{
    Host = Emailer.Host,
    Port = Emailer.Port,
    EnableSsl = Emailer.RequireSSL,
    UseDefaultCredentials = false,
    DeliveryMethod = System.Net.Mail.SmtpDeliveryMethod.Network,
    Credentials = creds
}

Umarım bu gelecekte baş ağrısını başkalarına kurtarmaya yardımcı olur.


2
Benim durumumda, kimlik bilgileri en son benim için çalıştı böylece kodu yeniden sıralayarak, seninkiyle aynı sorunu vardı.
Dev

1
İnanamıyorum ama işe yaradı! Daha az güvenli bayrağı etkinleştirmek istemediğim için 2 adımı etkinleştirdim, ancak Kimlik Bilgisini Gönder'den önce son alana kadar çalışmak istemedi. İnanılmaz!
Čikić Nenad

6
Sorun UseDefaultCredentialsayarlayıcıda setter tarafından ayarlanan this.transport.Credentials = value ? (ICredentialsByHost) CredentialCache.DefaultNetworkCredentials : (ICredentialsByHost) null;geçersiz kılan bu kod olmasıdır . Benim için bir hata gibi görünüyorcredentialsCredentialsSmtpClient
Tomasz Madeyski

@TomaszMadeyski bu yorum yerine cevap olmalı! bu benim sorunum ... nasıl yapıcı üzerinde kimlik bilgileri ayarlamak ve sonra tekrar yanlış bir değere atarsanız nasıl düşünebilirsiniz UseDefaultCredentials = yanlış kimlik bilgilerini geçersiz kılar ... deli !! ama bu olur .... teşekkürler
youuuuu



11

Şimdi bu hatayı atar daha önce çalışan bir kod var. Şifre sorunu yok. İletiyi base64'e dönüştürmeye de gerek yok. Görünüşe göre, aşağıdakileri yapmam gerekiyor:

  1. 2 faktörlü kimlik doğrulamayı kapatma
  2. "Daha az güvenli uygulamalara izin ver" seçeneğini AÇIK olarak ayarlayın
  3. Üretim sunucusundan gmail hesabınıza giriş yapın
  4. Giriş etkinliğini onaylamak için de buraya gidin
  5. Uygulamanızı üretim sunucusunda çalıştırın

Çalışma kodu

    public static void SendEmail(string emailTo, string subject, string body)
    {
        var client = new SmtpClient("smtp.gmail.com", 587)
        {
            Credentials = new NetworkCredential("youremail@gmail.com", "secretpassword"),
            EnableSsl = true
        };

        client.Send("youremail@gmail.com", emailTo, subject, body);
    }

2 faktörlü kimlik doğrulamayı kapatma 2 faktörlü kimlik doğrulamayı kapatma

"Daha az güvenli uygulamalara izin ver" seçeneğini AÇIK olarak ayarlayın (aynı sayfa, aşağıya kaydırmanız gerekir) Daha az güvenli uygulamalara izin ver


9

Google e-postasındaki adımı izleyin ve daha az güvenli uygulamaları etkinleştirin.


6

Aynı sorunla karşılaştım. 2 Adımlı Doğrulama'yı (MFA) açtığınızda olur. Sadece 2 Adımlı Doğrulama'yı kapatın ve sorununuz çözülmelidir.


Bu hesap için iki adımı etkinleştirmedim ve bu sorunu yaşadım.
Shiv

4

Aşağıda benim kod.Ayrıca aynı hata vardı ama sorun ben şifremi yanlış verdi oldu.Aşağıdaki kod mükemmel çalışır .. denemek

            MailMessage mail = new MailMessage();
            SmtpClient SmtpServer = new SmtpClient("smtp.gmail.com");             
            mail.From = new MailAddress("fromaddress@gmail.com");
            mail.To.Add("toaddress1@gmail.com");
            mail.To.Add("toaddress2@gmail.com");
            mail.Subject = "Password Recovery ";
            mail.Body += " <html>";
            mail.Body += "<body>";
            mail.Body += "<table>";
            mail.Body += "<tr>";
            mail.Body += "<td>User Name : </td><td> HAi </td>";
            mail.Body += "</tr>";

            mail.Body += "<tr>";
            mail.Body += "<td>Password : </td><td>aaaaaaaaaa</td>";
            mail.Body += "</tr>";
            mail.Body += "</table>";
            mail.Body += "</body>";
            mail.Body += "</html>";
            mail.IsBodyHtml = true;
            SmtpServer.Port = 587;
            SmtpServer.Credentials = new System.Net.NetworkCredential("sendfrommailaddress.com", "password");
            SmtpServer.EnableSsl = true;
            SmtpServer.Send(mail);

Sen bunu başvurabilir bloguma


benim yerel makinede çalışan aynı kodu kullanıyorum ama onun sunucu üzerinde çalışmıyor. Hata alma SMTP sunucusu güvenli bir bağlantı gerektiriyor veya istemcinin kimliği doğrulanmadı. Sunucu yanıtı şuydu: 5.5.1 Kimlik Doğrulaması Gerekli. .
Akshay Chawla

1
hosting sağlayıcımla temasa geçtiler: Paylaşılan sunucu ortamımızı desteklemeyecek üçüncü bölüm SMTP'yi (smtp.gmail.com) yapılandırdığınızı görebiliyorduk. Posta işlevinin aşırı kötüye kullanılması veya spam sorunu nedeniyle posta işlevi desteklenmez. Çok popüler ve sık kullanılan PHPMailer kullanarak e-posta gönderebilirsiniz. ama sitem mvc c # inşa, bu yüzden nasıl phpmailer kullanabilirsiniz?
Akshay Chawla


2

Microsoft Azure'a dağıtılan bir uygulama için de aynı sorunu yaşadım.

SmtpException: SMTP sunucusu güvenli bir bağlantı gerektiriyor veya istemcinin kimliği doğrulanmadı. Sunucu yanıtı şuydu: 5.5.1 Kimlik Doğrulaması Gerekli.

İlk olarak aşağıdaki sayfada (gmail kullanıcısı olarak oturum açmış olan) bilinmeyen tüm cihazları (İrlanda kaynaklı bazı ip adresleri) onayladım: https://security.google.com/settings/u/1/security/secureaccount

İstemci için aşağıdaki ayarları kullandım:

var client = new SmtpClient("smtp.gmail.com");
client.Port = 587;
client.EnableSsl = true;
client.UseDefaultCredentials = false;
client.Credentials = new NetworkCredential("my_user_name@gmail.com", "my_password"); 

Yalnızca smtp istemcisinde aşağıdaki özelliği ayarladıktan sonra çalışmaya başladı:

client.TargetName = "STARTTLS/smtp.gmail.com";

2

Benim için işe yarayan, daha az güvenli uygulamalar seçeneğini etkinleştirmekti (VB.NET kullanıyorum)

Public Shared Sub enviaDB(ByRef body As String, ByRef file_location As String)
        Dim mail As New MailMessage()
        Dim SmtpServer As New SmtpClient("smtp.gmail.com")
        mail.From = New MailAddress("from@gmail.com")
        mail.[To].Add("to@gmail.com")
        mail.Subject = "subject"
        mail.Body = body
        Dim attachment As System.Net.Mail.Attachment
        attachment = New System.Net.Mail.Attachment(file_location)
        mail.Attachments.Add(attachment)
        SmtpServer.Port = 587
        SmtpServer.Credentials = New System.Net.NetworkCredential("user", "password")
        SmtpServer.EnableSsl = True
        SmtpServer.Send(mail)
    End Sub

Hesabınıza giriş yapın ve ardından google.com/settings/security/lesssecureapps adresine gidin.


2

Tomasz Madeyski'nin bir sorunu sorunumu çözdü ... SetDefaultCredential'da bir hata olduğunu söylüyor:

"Sorun UseDefaultCredentials ayarlayıcısında şu kod olması: this.transport.Credentials = değer? (ICredentialsByHost) CredentialCache.DefaultNetworkCredentials: (ICredentialsByHost) null; Credentials setter tarafından ayarlanan kimlik bilgilerini geçersiz kılar"

smtpClient.UseDefaultCredentials = falseset kimlik bilgilerini koyduysanız ... bu satır bu kimlik bilgilerini boş olarak ayarlar ...


2

KASIM 2018, yukarıdaki her şeyi başarıyla denedi.

Sonunda işe yarayan çözüm aşağıdadır. Ne yazık ki SSL kullanmıyor, ama çalışıyor !!!

var fromAddress = new MailAddress(asd@asd.com, "From Name");
var toAddress = new MailAddress("tosend@asd.com", "To Name");

const string subject = "Subject";
const string body = "Body";

var smtp = new SmtpClient
{
    Host = "aspmx.l.google.com",
    Port = 25,
    EnableSsl = false
};
using (var message = new MailMessage(fromAddress, toAddress)
{
    Subject = subject,
    Body = body
})
{
    smtp.Send(message);
}

1

Daha az güvenli uygulamaları etkinleştirmekten, bağlantı noktası 587'yi denemeye kadar burada bulunan tüm önerileri denedim ... hiçbir şey işe yaramadı. Sonunda çizgiyi yorumladım UseDefaultCredentials = false. O boole dokunmazsam her şey işe yaradı.


1
burada aynı .. tek satır benden bir saat sürdü inanamıyorum!
Wahid Masud

0

Gerçekten birçok fikre baktım, tek çözüm bu yoldu (farklı e-posta Sağlayıcılarıyla çalışır):

            try
        {
            ViewProgressbar("Try to connect mail-server...", progressBar1.Value = 20);
            string host = dsProvider.Rows[y]["POP_hostOut"].ToString();
            int port = int.Parse(dsProvider.Rows[y]["POP_portOut"].ToString());  //587
            string[] email = von1.Split('@');
            string userName = (dsProvider.Rows[y]["login"].ToString() == "email[0]@email[1]")? email[0]+"@"+email[1] : email[0];
            string password = layer.getUserPassword(listSender.SelectedValue.ToString());
            SmtpClient client = new SmtpClient(host, port);
            client.DeliveryMethod = SmtpDeliveryMethod.Network;
            client.UseDefaultCredentials = false;
            //A idea from MSDN but it not works. You got the "The server response was: 5.5.1 Authentication Required."
            //System.Net.NetworkCredential myCreds = new System.Net.NetworkCredential(userName, password, host);
            //System.Net.CredentialCache cache = new System.Net.CredentialCache();
            //cache.Add(host, port, "NTLM", myCreds);
            ///cache.GetCredential(host, port, "NTLM");   //NTLM
            client.Credentials = new System.Net.NetworkCredential(userName, password);
            client.Host = host;
            client.Port = port;
            client.EnableSsl = true;
            client.Send(message);
            ViewProgressbar();
        }
        catch (SmtpException ex)...

0

Ben iş abonesi için bir google apps ve tüm doğru ayarları (smtp, port, enableSSL, vb) sahip olduktan sonra bile, son birkaç saat sadece bununla başa çıkmak. İşte benim ve e-posta göndermeye çalışırken 5.5.1 hatasını atan web siteleri için işe yarayan şey:

  1. Admin.google.com adresinize giriş yapın
  2. GÜVENLİK <- seçeneğini tıklamanız görünmüyorsa, 'DAHA FAZLA KONTROL' seçeneğini tıklayın ve listeden ekleyin
  3. Temel Ayarlar'ı tıklayın
  4. Temel Ayarlar kutusunun en altına gidin, şu bağlantıyı tıklayın: 'Daha az güvenli uygulamalar için ayarlara git'
  5. # 3 seçeneğini seçin: Tüm kullanıcılar için daha az güvenli uygulamalara erişimi zorlayın (Önerilmez)
  6. Pencerenin altındaki KAYDET düğmesine basın

Bunu yaptıktan sonra web sitesinden gelen e-posta formlarım tekrar çalışıyordu. İyi şanslar!


0

Gmail'den belirli bir APP şifresi oluşturmanız / oluşturmanız gerekebilir. uygulamanız veya komut dosyanız normal şifreniz yerine bu yeni şifreyi kullanır. Normal şifreniz yine de sizin için iyi çalışır.

Bunu benim için yaptı. Yine de aynı e-posta hesabını kullandım, ancak uygulamaya özel yeni bir şifre oluşturmak zorunda kaldım.

https://support.google.com/accounts/answer/185833?hl=en

Ekran görüntüsü

Temel olarak burada yapabilirsiniz: https://security.google.com/settings/security/apppasswords


0

Gmail kullanıyorsanız.

  • Hesabınıza 1 oturum açın

    2- bu bağlantıya göz atın

    3- Daha az güvenli uygulamalara izin ver: AÇIK

Zevk almak....



0

smtp.SendMailAsync (posta) beklemeden önce kesme noktası koymayın;

:)

kırılma noktasını kaldırdığımda bu hatayı veren bir kırılma noktası ile beklediğinde çalıştı


-1

Yukarıda belirtilen tüm çözümleri kullandım, ancak sonunda yalnızca Gmail ayarlarından IMAP Erişimini etkinleştirdikten sonra çalıştı. Gmail ayarlarında IMAP Erişimini Etkinleştir bağlantısı

Tabii ki, diğer çözümlerde de noktalar gerekiyordu.


Bu bana yardımcı olmadı. IMAP erişimini etkinleştirmek, Outlook, Thunderbird gibi diğer posta istemcilerinden gelen Gmail e-posta iletilerini okumanızı sağlar.
kimbaudi

-5

ev sahibini değiştirmeyi deneyin, bu yeni, bu yapılandırma mozilla thunderbird var

Host = "smtp.googlemail.com"

bu benim için çalışıyor

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.