it-swarm-tr.com

MailMessage ve smtpClient üzerinden Gmail smtp'ye kimlik doğrulaması yapılamıyor

Bunun neden işe yaramadığını ömrümle çözemiyorum.

SmtpClient smtp = new SmtpClient
{
    Host = "smtp.gmail.com",
    Port = 587,
    UseDefaultCredentials = false,
    DeliveryMethod = SmtpDeliveryMethod.Network,
    Credentials = new NetworkCredential("[email protected]", "myGmailPasswordHere"),
    EnableSsl = true,
    Timeout = 10000
};


smtp.Send(mail);

Alırım:

SMTP sunucusu güvenli bir bağlantı gerektirir veya istemcinin kimliği doğrulanmadı. Sunucu yanıtı: 5.5.1 Kimlik Doğrulama Gerekli.

Sadece EnableSsl değerini true olarak belirledim, böylece güvenli bağlantıda sorun olmamalı.

Bunu localhost'tan çalıştırıyorum. Ve evet, auth (girdiğim kullanıcı adı ve şifrem) (gmail hesap bilgilerim)% 100 haklı.

18
PositiveGuy

Bunun eski bir konu olduğunu biliyorum, ANCAK ... Google güvenlik ayarlarında bir şey değiştirdi.

E-postamı Google’dan "Google hesabınızda oturum açma girişimini engellediğimizi" belirten bir e-postayla kontrol edene kadar tüm cevaplarla mücadele ediyordum.

Bu beni bu sayfaya yönlendirdi: Google Hesap Güvenliği

"Daha az güvenli uygulamalara erişim" bölümünde, C # uygulamanız gibi hesabınıza diğer cihazlardan/uygulamalardan erişebilirsiniz.

Not, artık "uygulamaya özel" bir bölüm yoktur.

Umarım bu birine yardım eder ... Hayatımın 30 dakikasını kaybettim ...

38
Tiny

Giriş bilgisi% 100 haklıysa, UseDefaultCredentials = false first 'yi ve sonra Credentials = new NetworkCredential("[email protected]", "myGmailPasswordHere") kullanmak istediğiniz kimlik bilgilerini ayarlamanız gerekir.

İlk önce kimlik bilgilerini ayarlarsanız, UseDefaultCredentials = false değerini ayarladığınızda, Credentialsözelliğini nullyapar.

Bu kablolu, ama başıma geldi.

Kodunuzu hata ayıklayın ve Credentialsözelliğinin smtp.Send(message); çağrılmadan önce boş olup olmadığını kontrol edin. Eğer öyleyse, sırayı tersine çevirmeyi deneyin. Doğru sıraya sahip gözüküyorsunuz, ancak boş ise satır içi başlatmayı kullanmayın.

Umarım yardımcı olur.

EDIT: İki adımlı doğrulama kullanıyorsanız, bir Uygulamaya Özgü şifre kullandığınızdan emin olun. 

20
edteke

Gmail, Uygulamaya özel şifre gerektiriyor (ana şifreniz değil). 

Lütfen şuna bakın: http://support.google.com/mail/bin/answer.py?hl=tr&answer=1173270

Son zamanlarda aynı sorunu yaşadım.

10
Aleh Zasypkin

Bu sorunu daha önce yaşadım ve aşağıdaki adımları izleyerek düzelttim:

  1. " Hesabım " ayarlarına gidin.
  2. " Oturum Açma ve Güvenlik " kategorisini tıklayın.
  3. " Bağlı uygulamalar ve siteler " bölümüne gidin.
  4. " Daha az güvenli uygulamalara izin ver " seçeneğini kapatın.

Bu seçeneği kapattım ve kodum başarıyla çalıştırıldı.

3

Bu benim için iyi çalıştı

SmtpClient smtp = new SmtpClient
    {
        Host = "smtp.gmail.com",
        Port = 587,
        UseDefaultCredentials = false,
        DeliveryMethod = SmtpDeliveryMethod.Network,
        Credentials = new NetworkCredential("[email protected]", "mypassword"),
        EnableSsl = true,
        Timeout = 10000
    };

    MailMessage message = new MailMessage();
    message.Body = "hello there";
    message.Subject = "hi!!";
    message.To.Add("[email protected]");
    message.From = new MailAddress("[email protected]");
    smtp.Send(message);
2
krishna

Benim için çözüm 2 "adım" gerekli:

  • Önce UseDefaultCredentials = false 'ı ayarlayın, ardından Credentials = new NetworkCredential("[email protected]", "myGmailPasswordHere") kullanmak istediğiniz kimlik bilgilerini ayarlayın. Önce kimlik bilgilerini ayarlamak, UseDefaultCredentials = false değerini ayarladığımda, Credentials özelliğini null yapacaktır.
  • Google profilimde daha az güvenli uygulamalara izin ver.
1
Martino Messori
<mailSettings>
            <smtp from="[email protected]">
                <network Host="smtp.gmail.com" password="yourpassword" port="587" userName="username"/>
            </smtp>
</mailSettings>

Düzenleme: Bundan sonra bu satırı smtp.Credentials = Credentials eklemeyi deneyin 

Credentials = new NetworkCredential("[email protected]", "myGmailPasswordHere"),

0
coder

Çok basit sadece C # WPF Uygulaması için bunu izleyin:

       private void SendByGmail(string subject, string body, string recepientEmail, string MailMsgFrom, string MailMsgPass)
        {
            using (MailMessage mailMessage = new MailMessage())
            {
                mailMessage.From = new MailAddress(MailMsgFrom);
                mailMessage.Subject = subject;
                mailMessage.Body = body;
                mailMessage.IsBodyHtml = true;
                mailMessage.To.Add(new MailAddress(recepientEmail));
                mailMessage.Priority = System.Net.Mail.MailPriority.High;
                SmtpClient smtp = new SmtpClient();
                smtp.Host = "smtp.gmail.com";
                smtp.EnableSsl = true;
                smtp.Timeout = 200000;
                System.Net.NetworkCredential NetworkCred = new System.Net.NetworkCredential();
                NetworkCred.UserName = MailMsgFrom;
                NetworkCred.Password = MailMsgPass;
                smtp.UseDefaultCredentials = true;
                smtp.Credentials = NetworkCred;
                smtp.Port = 587;
                smtp.Send(mailMessage);

            }
        }

Ondan sonra bu hatayı almalısın. 

smtpException   {"The SMTP server requires a secure connection or the client was not authenticated. The server response was: 5.5.1 Authentication Required. Learn more at"}   System.Net.Mail.SmtpException

Bu sorunu çözmek için önce e-posta hesabınızı web tarayıcısında google hesabınıza giriş yapın. Ardından bu bağlantıyı izleyin Google Hesap Etkinliği . Ardından, hesabınıza en son Aygıtlar ve etkinlik verilir. Gösteri mevcut etkinliğinizi mevcut cihazınızdan engellerse. Sadece bu engeli kaldır. Ardından e-posta göndermeyi tekrar deneyin. 
Teşekkürler

0
RKTUXYN

Aynı sorun, Amazon AWS hosting üzerinde çalışan bir ASP.NET uygulamasından smtp.gmail.com'a erişiyordu. Yapılandırmamın doğru olduğu ortaya çıktı - başka bir bilgisayardan da iyi çalışıyordu - ama gmail giriş denememi reddetti, çünkü alışılmadık bir yerden giriş yapmayı denedim. Web arayüzü üzerinden (www.gmail.com) gmail'e giriş yaptım ve bir captcha'ya cevap vermek zorunda kaldım. Bundan sonra çalıştı.

0
user2037013

Aşağıdaki gibi bir geri arama var. System.Net 'a hatayı yoksaymasını söyle!

Bunu aramadan önce Send() dosyasına ekleyin.

ServicePointManager.ServerCertificateValidationCallback = 
    delegate(object s, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors) 
    { return true; };

smtp.Send(mail);
0
ukhardy

Benim sorunum, gmail hesabımızın etki alanı sahibinin hem "daha az güvenli uygulamalara erişim" hem de iki aşamalı kimlik doğrulamasını devre dışı bırakmasıydı. Bunu etkinleştirmenin bir yolu yoktu, ayarı bile göremedim. Bu yüzden kişisel hesabımla test ettim ve iyi çalıştı.

0
Robert