it-swarm-tr.com

Gmail Hatası: SMTP sunucusu güvenli bir bağlantı gerektirir veya istemci kimliği doğrulanmadı. Sunucu yanıtı şuydu: 5.5.1 Kimlik Doğrulama Gerekiyor

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

        var fromAddress = new MailAddress("[email protected]");
        var fromPassword = "xxxxxx";
        var toAddress = new MailAddress("[email protected]");

        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 A/c adresimde kodu üretim sunucusundan aldıktan sonra aşağıdaki e-postayı aldım

Merhaba , 

Birisi yakın zamanda şifrenizi Google .__’nıza giriş yapmak için kullandı. Hesap [email protected] Bu kişi böyle bir uygulamayı kullanıyordu. Bir e-posta, müşteri veya mobil cihaz olarak. 

Bunun için çalışan bir korsanının olması durumunda oturum açma girişimini engelledik. hesabına eriş. Lütfen oturum açma girişiminin ayrıntılarını gözden geçirin:

3 Ocak 2014 Cuma 13:56:08 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 .__ olabilir. hesabınıza erişmeye çalışıyor. Hesabınıza giriş yapmalısınız ve şifrenizi derhal sıfırlayın. 

Şifreyi yenile 

Eğer bu sizseniz ve hesabınıza girmekte sorun yaşıyorsanız, 'de listelenen sorun giderme adımlarını tamamlayın. http://support.google.com/mail?p=client_login

Saygılarımızla, Google Hesapları ekibi

193
vcs

Bu genellikle farklı zaman dilimlerinden veya IP Adresi Bilgisayarından giriş yapmayı denediğinizde gerçekleşir. Üretim sunucunuz ve kullandığınız posta kimliği farklı zaman dilimlerinde. Bir çözümden birini seçin:

1) Uzaktan erişim yoluyla üretim sunucusunda oturum açın ve kimlik bilgilerinizle bir kez gmail'de oturum açın. Onay isteyecek, onaylayacak ve çıkış yapacaklar.

Veya 2) yerel bilgisayarınıza gmail ile giriş yapın, Bunu Link izleyin ve bu etkinliği inceleyin seçin ve uygun işlemleri yapın.

162
Arshad

Koddan posta göndermeye çalıştığınızda ve "SMTP sunucusu güvenli bir bağlantı gerektirir veya istemcinin kimliği doğrulanmadı" hatasını bulduğunda, sunucu yanıtı şuydu: 5.5.1 Kimlik Doğrulama Gerekiyor ", aşağıdakilerden dolayı ortaya çıkabilecek hata vakalar.

vaka 1: şifre yanlış olduğunda

case 2: bazı uygulamalardan giriş yapmaya çalıştığınızda

case 3: zaman diliminiz/domain/computer dışındaki etki alanından giriş yapmaya çalıştığınızda (Kodlardan posta gönderirken çoğu durumda bu 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: aşağıdaki bağlantıdan güvenlik ayarlarına gidin HTTPS://WWW.GOOGLE.COM/SETTINGS/SECURITY/LESSSECUREAPPS ve daha az güvenli uygulamaları etkinleştirin. Böylece tüm uygulamalardan giriş yapabilirsiniz.

vaka 2 için çözüm 2 :( bkz. https://stackoverflow.com/a/9572958/52277 ) iki faktörlü kimlik doğrulamasını etkinleştirin (diğer bir deyişle iki adımlı doğrulama) ve ardından bir uygulama oluşturun özel şifre. SMTP üzerinden kimlik doğrulamak için bu 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ği gözden geçirmek, en son güvenlik standartları nedeniyle bağlantı faydalı olmayacaktır. Öyleyse aşağıdaki davayı dene.

Durum 3 için çözüm 2: Kodunuzu üretim sunucusunda bir yerde barındırdıysanız ve üretim sunucusuna erişiminiz varsa, üretim sunucusuyla uzak masaüstü bağlantısı alıp, üretim tarayıcısından bir kez giriş yapmayı deneyin. server ..__ Bu, google’a giriş yapmak için istisna ekler ve koddan giriş yapmanıza izin verilir.

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

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

bunun için HTTPS://G.CO/ALLOWACCESS bağlantısını takip edin ve devam düğmesine tıklayarak erişime izin verin. 

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

235
Roshan Parmar

Güvenlik sorunu olan Gmail, varsayılan olarak e-posta hesabınızın özel uygulamalardan erişmesini önler. Uygulamanızdan giriş yapmayı kabul edecek şekilde ayarlayabilirsiniz.

E-postanıza giriş yaptıktan sonra BURAYA TIKLAYIN

Bu sizi aşağıdaki sayfaya götürecek

Less Secure Apps Page

92
Sayka

Bugün her çözümü denemek için birkaç saat harcadıktan sonra, hala bu hatayı alamadım. Gmail'i bu şekilde birçok kez kullandım, bu yüzden aptalca bir şey olduğunu biliyordum, ancak hiçbir şeyi sorunu çözmedim. Sonunda benim davamda çözümün üzerine tökezledim, bu yüzden paylaşacağımı düşündüm.

Birincisi, yukarıdaki cevapların çoğuna da ihtiyaç vardır, ancak benim durumumda SmtpClient sınıfını oluştururken kodun sıralanması basit bir konuydu.

Aşağıdaki bu birinci kod snippet'inde, "Credentials = creds" satırının nerede olduğuna dikkat edin. Bu uygulama, başka herhangi bir şeyi doğru ayarlamış olsanız bile, bu soruda başvurulan hatayı üretecektir.

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 altına taşırsanız, e-posta hatasız olarak gönderilir. Çevre kodunda hiçbir değişiklik yapmadım ... yani ... kullanıcı adı/parola, vb. Açıkça, EnableSSL, UseDefaultCredentials veya DeliveryMethod ilk ayarlanan Kimlik Bilgelerine bağlıdır. hepsi hangisi olduğunu bulmak için.

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şkasının başını ağrıtmaya yardımcı olur.

18
user1011627

Merhaba ben de aynı sorunu yaşadım 

çözmek için ne yaptım. benim gmail hesabıma bağlandıktan sonra daha az güvenli olan uygulamayı açmam. Bu bağlantıya girdim: https://www.google.com/settings/security/lesssecureapps

Sonra güvenli uygulamayı açtım, ve çalıştı . da yukarıda söylendi

11
Barak Rosenfeld

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

8
Trung

Şimdi bu hatayı atan daha önce çalışan bir kodum var. Şifre ile ilgili sorun yok. Mesajı ya base64'e dönüştürmeye de gerek yok. Çıkıyor, aşağıdakileri yapmam gerekiyor:

  1. 2 faktörlü kimlik doğrulamayı kapatın
  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 ayrıca here seçeneğine 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("[email protected]", "secretpassword"),
            EnableSsl = true
        };

        client.Send("[email protected].com", emailTo, subject, body);
    }

2 faktörlü kimlik doğrulaması kapatılıyor Turning off 2-factor authentication

"Daha az güvenli uygulamalara izin ver" seçeneğini AÇIK olarak ayarlayın (aynı sayfa, en altına kaydırmanız gerekir) Allow less secure apps

7
Jeson Martajaya

Ben de aynı problemle karşılaştım. 2 Adım Doğrulama (MFA) açıldığında gerçekleşir ..__ 2 Adım Doğrulamayı Kapatın ve sorununuz çözülmelidir.

6
Anik

Aşağıda benim kodum. Ayrıca aynı hatayı vardı ama sorun benim şifremi yanlış verdi. Aşağıdaki kod mükemmel çalışacak .. dene

            MailMessage mail = new MailMessage();
            SmtpClient SmtpServer = new SmtpClient("smtp.gmail.com");             
            mail.From = new MailAddress("[email protected]");
            mail.To.Add("[email protected]");
            mail.To.Add("[email protected]");
            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);

Blogum 'a başvurabilirsiniz.

4
Ganesh Pillai N

Buradan "Daha az güvenli uygulamalara izin ver" i açmanız gerekir https://myaccount.google.com/lesssecureapps

3
Raj K

veya gmail ..__ ayarını açmanız yeterli.

 enter image description here

2
Rajesh Paliwal

Benim için çalıştığım, daha az güvenli uygulamalar için seçeneği etkinleştirmek oldu (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("[email protected]")
        mail.[To].Add("[email protected]")
        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

Bu yüzden hesabınıza giriş yapın ve ardından google.com/settings/security/lesssecureapps

2
Edgar

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

SmtpException: SMTP sunucusu güvenli bir bağlantı veya .__ gerektiriyor. müşteri kimliği doğrulanmadı. Sunucu cevabı: 5.5.1 Kimlik Doğrulama Gerekli.

Önce, aşağıdaki sayfada bulunan tüm bilinmeyen cihazları (İrlanda’dan gelen bazı ip adresleri) onayladım (gmail kullanıcısı olarak giriş yaptı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("[email protected]", "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
haiiaaa

Burada bulunan tüm önerileri, daha az güvenli uygulamaları etkinleştirmekten, 587 numaralı bağlantı noktasını denemeye kadar denedim ... hiçbir şey çalışmadı. Sonunda sadece UseDefaultCredentials = false satırını yorumladım. Her şey o boole dokunmadıysam işe yaradı. 

1
Kris Coleman

Tomasz Madeyski'den bir yorum sorunumu çözen şeydi ... SetDefaultCredential'ta bir hata olduğunu söylüyor: 

"Sorun, UseDefaultCredentials ayarlayıcısında şu kodun olmasıdır: this.transport.Credentials = value? (ICredentialsByHost) CredentialCache.DefaultNetworkCredentials: (ICredentialsByHost) null;

kimlik bilgilerini ayarladıktan sonra smtpClient.UseDefaultCredentials = false koyarsanız ... bu satır bu kimlik bilgilerini sıfırlayacak şekilde ayarlanır ...

1
FabianSilva

Gmail ..__'den belirli bir APP şifresi oluşturmanız/oluşturmanız gerekebilir. Uygulamanız ya da komut dosyanız normal şifrenizin yerine bu yeni şifreyi kullanacaktır.

Bu benim için ne yaptı .. .. Hala aynı e-posta hesabını kullandım ancak yeni bir uygulamaya özel şifre oluşturmak zorunda kaldım.

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

 Screen shot

Temelde burada yapabilirsiniz: https://security.google.com/settings/security/apppasswords

0
samiup

KASIM 2018, yukarıdaki herşeyi başarı ile denedik.

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

var fromAddress = new MailAddress([email protected], "From Name");
var toAddress = new MailAddress("[email protected]", "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);
}
0
InGeek

Google hesabınıza erişmek için daha az güvenli uygulamaları izin vermemelisiniz.

yapmak:

https://myaccount.google.com/lesssecureapps

0
MohammadSoori

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

            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
Walter

Gmail kullanıyorsanız.

  • 1-hesabınıza giriş yapın 

    2- buna göz at bağlantı

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

Keyfini çıkarın....

0
Muhammad Azeem

İş abonesi için google uygulamalarıyım ve son birkaç saatimi, doğru ayarları yaptıktan sonra bile (smtp, port, enableSSL, vb.) Bununla başa çıkıyorum. İşte bana ve bir e-posta göndermeye çalışırken 5.5.1 hatasını veren web siteleri:

  1. Admin.google.com adresinize giriş yapın
  2. GÜVENLİK <- tıklatıldığında görünmüyorsa, 'DAHA FAZLA KONTROLLER' seçeneğini tıklayın ve listeden ekleyin
  3. Temel Ayarlar'ı tıklayın
  4. Temel Ayarlar kutusunun altına gidin, bağlantıyı tıklayın: 'Daha az güvenli uygulamalar için ayarlara gidin'
  5. Seçenek 3'ü seçin: Tüm kullanıcılar için daha az güvenli uygulamalara erişimi zorlayın (Tavsiye edilmez)
  6. Pencerenin altındaki SAVE tuşuna basın.

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

0
RichieMN

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

:) 

kırılma noktasını beklerken kırılma noktasını kaldırdığımda bu hatayı verdi

0
dewelloper