it-swarm-id.com

Galat Gmail: Server SMTP memerlukan koneksi aman atau klien tidak diautentikasi. Respons server adalah: 5.5.1 Diperlukan Otentikasi

Saya menggunakan kode berikut untuk mengirim email. Kode ini berfungsi dengan benar di Mesin lokal saya. Tetapi pada server Produksi saya mendapatkan pesan kesalahan

        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);

Dan di A/c Gmail saya, saya telah menerima email berikut setelah saya menjalankan kode dari server produksi

Hai, 

Seseorang baru-baru ini menggunakan kata sandi Anda untuk mencoba masuk ke Google Anda Akun [email protected] Orang ini menggunakan aplikasi seperti itu. sebagai email, klien atau perangkat seluler. 

Kami mencegah upaya masuk seandainya ini pembajak yang mencoba akses akun Anda. Harap tinjau detail upaya masuk:

Jumat, 3 Januari 2014 13:56:08 pukul UTC Alamat IP: xxx.xx.xx.xxx (abcd.net.) Lokasi: Philadelphia PA, Philadelphia, PA, USA

Jika Anda tidak mengenali upaya masuk ini, orang lain mungkin mencoba mengakses akun Anda. Anda harus masuk ke akun Anda dan segera atur ulang kata sandi Anda. 

Setel ulang kata sandi 

Jika ini Anda dan Anda mengalami kesulitan mengakses akun Anda, selesaikan langkah pemecahan masalah yang tercantum di http://support.google.com/mail?p=client_login

Hormat saya, Tim Akun Google

193
vcs

Ini umumnya terjadi ketika Anda mencoba masuk dari zona waktu yang berbeda atau Komputer Alamat IP. Server produksi Anda dan id surat yang Anda gunakan keduanya berada di zona waktu yang berbeda. Pilih salah satu dari solusi ini:

1) Masuk ke server produksi melalui akses jarak jauh, dan masuk ke Gmail sekali dengan kredensial Anda. Mereka akan meminta konfirmasi, mengonfirmasi dan keluar.

Atau 2) masuk gmail ke komputer lokal Anda, Ikuti ini Tautan dan pilih tinjau kegiatan ini dan ambil tindakan yang tepat.

162
Arshad

Ketika Anda mencoba mengirim surat dari kode dan Anda menemukan kesalahan "Server SMTP membutuhkan koneksi yang aman atau klien tidak diautentikasi. Respons server adalah: 5.5.1 Diperlukan Otentikasi", daripada kesalahan yang mungkin terjadi karena mengikuti kasus.

kasus 1: ketika kata sandi salah

huruf 2: ketika Anda mencoba masuk dari beberapa Aplikasi

kasus 3: ketika Anda mencoba masuk dari domain selain dari zona waktu/domain/komputer Anda (Ini adalah kasus di sebagian besar skenario saat mengirim surat dari kode)

Ada solusi untuk masing-masing

solusi untuk kasus 1: Masukkan kata sandi yang benar.

solusi 1 untuk kasus 2: buka pengaturan keamanan di tautan followig https://www.google.com/settings/security/lesssecureapps dan aktifkan aplikasi yang kurang aman. Sehingga Anda dapat masuk dari semua aplikasi.

solusi 2 untuk kasus 2 :( lihat https://stackoverflow.com/a/9572958/52277 ) aktifkan otentikasi dua faktor (alias verifikasi dua langkah), lalu buat aplikasi khusus kata sandi. Gunakan kata sandi yang baru dibuat untuk mengautentikasi melalui SMTP.

solusi 1 untuk kasus 3: (Ini mungkin membantu) Anda perlu meninjau aktivitas. tetapi meninjau aktivitas tidak akan membantu karena standar keamanan terbaru tautannya tidak akan berguna. Jadi coba kasus di bawah ini.

solusi 2 untuk kasus 3: Jika Anda telah meng-host kode Anda di suatu tempat di server produksi dan jika Anda memiliki akses ke server produksi, daripada mengambil koneksi remote desktop ke server produksi dan mencoba masuk sekali dari browser produksi server . Ini akan menambahkan pengecualian untuk masuk ke google dan Anda akan diizinkan masuk dari kode.

Tapi bagaimana jika Anda tidak memiliki akses ke server produksi. .__ coba solusinya 3

solusi 3 untuk kasus 3: Anda harus mengaktifkan login dari zona waktu/ip lain untuk akun google Anda.

untuk melakukan ini ikuti tautan https://g.co/allowaccess dan izinkan akses dengan mengklik tombol lanjutkan. 

Dan itu saja. Ini dia Sekarang Anda dapat masuk dari komputer mana pun dan dengan cara apa pun ke akun Google Anda.

235
Roshan Parmar

Ini masalah keamanan, Gmail secara default mencegah akses untuk akun email Anda dari aplikasi khusus. Anda dapat mengaturnya untuk menerima login dari aplikasi Anda.

Setelah Masuk ke email Anda, KLIK DI SINI

Ini akan membawa Anda ke halaman berikut

 Less Secure Apps Page

92
Sayka

Setelah menghabiskan beberapa jam hari ini mencoba setiap solusi di sini, saya masih tidak dapat mengatasi kesalahan yang tepat ini. Saya telah menggunakan gmail berkali-kali dengan cara ini sehingga saya tahu itu sesuatu yang bodoh, tetapi tidak ada yang saya perbaiki. Saya akhirnya menemukan solusi dalam kasus saya jadi saya pikir saya akan berbagi.

Pertama, sebagian besar jawaban di atas juga diperlukan, tetapi dalam kasus saya, itu adalah masalah sederhana pemesanan kode saat membuat kelas SmtpClient.

Dalam cuplikan kode pertama di bawah ini, perhatikan di mana baris "Credentials = creds" berada. Implementasi ini akan menghasilkan kesalahan yang dirujuk dalam pertanyaan ini bahkan jika Anda sudah mengatur semuanya dengan benar.

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
        }

Namun, jika Anda memindahkan panggilan setter Kredensial ke bawah, email akan dikirim tanpa kesalahan. Saya tidak membuat perubahan pada kode di sekitarnya ... yaitu ... nama pengguna/kata sandi, dll. Jelas, baik EnableSSL, UseDefaultCredentials, atau DeliveryMethod tergantung pada Kredensial yang ditetapkan pertama .... Saya tidak menguji semua untuk mencari tahu yang mana itu.

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
        }

Semoga ini membantu menyelamatkan orang lain beberapa sakit kepala di masa depan.

18
user1011627

Hai saya punya masalah yang sama, 

apa yang telah saya lakukan untuk menyelesaikannya. adalah untuk mengaktifkan aplikasi yang kurang aman . setelah terhubung ke akun gmail saya. Saya memasukkan tautan ini: https://www.google.com/settings/security/lesssecureapps

Lalu saya nyalakan aplikasi yang aman dan, dan itu berhasil . Telah dikatakan juga di atas

11
Barak Rosenfeld

Cukup ikuti langkah di email google dan aktifkan aplikasi yang kurang aman. 

8
Trung

Saya memiliki kode yang sebelumnya berfungsi yang melempar kesalahan ini sekarang. Tidak ada masalah pada kata sandi. Tidak perlu mengonversi pesan ke base64 juga. Ternyata, saya perlu melakukan hal berikut:

  1. Matikan otentikasi 2-faktor
  2. Setel "Izinkan aplikasi yang kurang aman" ke AKTIF
  3. Masuk ke akun gmail Anda dari server produksi
  4. Pergi sini juga untuk menyetujui aktivitas login
  5. Jalankan aplikasi Anda di server produksi

Kode kerja

    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]", emailTo, subject, body);
    }

Mematikan otentikasi 2-faktor  Turning off 2-factor authentication

Setel "Izinkan aplikasi yang kurang aman" ke ON (halaman yang sama, perlu gulir ke bawah)  Allow less secure apps

7
Jeson Martajaya

Saya menghadapi masalah yang sama. Itu terjadi ketika Anda mengaktifkan Verifikasi 2 Langkah (MFA) . Matikan saja Verifikasi 2 Langkah dan masalah Anda harus diselesaikan.

6
Anik

Di bawah ini adalah kode saya. Saya juga memiliki kesalahan yang sama tetapi masalahnya adalah saya salah memasukkan kata sandi saya.

            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);

Anda dapat merujuknya di blog saya

4
Ganesh Pillai N

Anda harus mengaktifkan "Izinkan aplikasi yang kurang aman" dari sini https://myaccount.google.com/lesssecureapps

3
Raj K

cukup nyalakan pengaturan atau gmail . lihat gambar di bawah ini:

 enter image description here

2
Rajesh Paliwal

Apa yang berhasil bagi saya adalah mengaktifkan opsi untuk aplikasi yang kurang aman (Saya menggunakan VB.NET)

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

Jadi masuk ke akun Anda dan kemudian pergi ke google.com/settings/security/lesssecureapps

2
Edgar

Saya memiliki masalah yang sama untuk aplikasi yang digunakan untuk Microsoft Azure.

SmtpException: Server SMTP memerlukan koneksi aman atau klien tidak diautentikasi. Respons server adalah: 5.5.1 Diperlukan Otentikasi.

Pertama saya menyetujui semua perangkat yang tidak dikenal (beberapa alamat ip yang berasal dari Irlandia) pada halaman berikut (masuk sebagai pengguna gmail): https://security.google.com/settings/u/1/security/secureaccount

Saya menggunakan pengaturan berikut untuk klien:

var client = new SmtpClient("smtp.gmail.com");
client.Port = 587;
client.EnableSsl = true;
client.UseDefaultCredentials = false;
client.Credentials = new NetworkCredential("[email protected]", "my_password"); 

Itu mulai bekerja hanya setelah saya mengatur properti berikut di smtp-client:

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

Saya mencoba semua saran yang ditemukan di sini, dari mengaktifkan aplikasi yang kurang aman, hingga mencoba port 587 ... tidak ada yang berhasil. Akhirnya saya hanya berkomentar di baris UseDefaultCredentials = false. Semuanya bekerja jika saya tidak menyentuh boolean itu. 

1
Kris Coleman

Sebuah komentar dari Tomasz Madeyski adalah apa yang memperbaiki masalah saya ... ia mengatakan ada bug di SetDefaultCredential, katanya: 

"Masalahnya adalah bahwa dalam setter UseDefaultCredentials ada kode ini: this.transport.Credentials = value? (ICredentialsByHost) CredentialCache.DefaultNetworkCredentials: (ICredentialsByHost) null; yang mengesampingkan kredensial yang ditetapkan oleh Credentials setter."

jika Anda meletakkan smtpClient.UseDefaultCredentials = false setelah menetapkan kredensial ... baris ini disetel ke null kredensial itu ...

1
FabianSilva

Anda mungkin perlu membuat/membuat kata sandi APP tertentu dari gmail . Anda aplikasi atau skrip kemudian akan menggunakan kata sandi baru ini alih-alih kata sandi Anda yang biasa . Kata sandi reguler Anda masih akan berfungsi dengan baik untuk Anda.

Itulah yang dilakukan untuk saya ... Saya masih menggunakan akun email yang sama tetapi harus membuat kata sandi khusus aplikasi baru.

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

 Screen shot

Pada dasarnya Anda dapat melakukannya di sini: https://security.google.com/settings/security/apppasswords

0
samiup

NOVEMBER 2018, Saya sudah mencoba semuanya di atas tanpa hasil.

Di bawah ini adalah solusi yang akhirnya berhasil. Sayangnya ini tidak menggunakan SSL, tetapi berhasil !!!

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

Anda harus melarang aplikasi yang kurang aman untuk mengakses akun google Anda.

melakukan:

https://myaccount.google.com/lesssecureapps

0
MohammadSoori

Saya benar-benar melihat banyak ide, satu-satunya solusi adalah dengan cara ini (bekerja dengan Penyedia email yang berbeda):

            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

Jika Anda menggunakan gmail.

  • 1-masuk ke akun Anda 

    2- browse tautan ini

    3 - Izinkan aplikasi yang kurang aman: AKTIF

Nikmati....

0
Muhammad Azeem

Saya adalah aplikasi Google untuk pelanggan bisnis dan saya menghabiskan beberapa jam terakhir hanya berurusan dengan ini, bahkan setelah memiliki semua pengaturan yang benar (smtp, port, enableSSL, dll). Inilah yang berfungsi untuk saya dan situs web yang melemparkan kesalahan 5.5.1 ketika mencoba mengirim email:

  1. Masuk ke admin.google.com Anda
  2. Klik SECURITY <- jika ini tidak terlihat, lalu klik 'MORE CONTROLS', dan tambahkan dari daftar
  3. Klik Pengaturan Dasar
  4. Gulir ke bagian bawah kotak Pengaturan Dasar, klik tautan: 'Buka pengaturan untuk aplikasi yang kurang aman'
  5. Pilih opsi # 3: Menerapkan akses ke aplikasi yang kurang aman untuk semua pengguna (Tidak Disarankan)
  6. Tekan SAVE di bagian bawah jendela

Setelah melakukan ini, formulir email saya dari situs web kembali berfungsi. Semoga berhasil!

0
RichieMN

jangan letakkan break-point sebelum menunggu smtp.SendMailAsync (mail);

:) 

ketika menunggu dengan break point memberikan kesalahan ini ketika saya menghapus break point itu berhasil

0
dewelloper