Mengirim email melalui server SMTP Gmail dengan C #

242

Untuk beberapa alasan, jawaban yang diterima atau yang lain tidak berfungsi untuk saya untuk " Mengirim email dalam .NET melalui Gmail ". Mengapa mereka tidak bekerja?

UPDATE: Saya telah mencoba semua jawaban (diterima dan sebaliknya) dalam pertanyaan lain, tetapi tidak ada yang bekerja.

Saya hanya ingin tahu apakah itu bekerja untuk orang lain, kalau tidak Google mungkin telah mengubah sesuatu (yang telah terjadi sebelumnya).

Ketika saya mencoba potongan kode yang digunakan SmtpDeliveryMethod.Network, saya dengan cepat menerima SmtpException on Send (message). Pesannya adalah

Server SMTP memerlukan koneksi yang aman atau klien tidak diautentikasi.

Respons server adalah:

5.5.1 Diperlukan Otentikasi. Pelajari lebih lanjut di "<- serius, itu berakhir di sana.

MEMPERBARUI:

Ini adalah pertanyaan yang saya tanyakan sejak lama, dan jawaban yang diterima adalah kode yang telah saya gunakan berkali-kali pada proyek yang berbeda.

Saya telah mengambil beberapa ide dalam posting ini dan proyek EmailSender lainnya untuk membuat proyek EmailSender di Codeplex . Ini dirancang untuk testabilitas dan mendukung layanan SMTP favorit saya seperti GoDaddy dan Gmail.

CVertex
sumber
Saya mencoba melakukan ini menggunakan metode serupa dalam bahasa yang berbeda. Mengalami hal yang sama: Metode terdokumentasi lama yang berfungsi sebelumnya, tidak berhasil untuk saya. Jadi, Anda bertanya-tanya apakah google mengubah sesuatu, atau apakah Anda melakukan sesuatu yang salah.
AaronLS
2
@ aaronls satu-satunya perubahan yang terakhir tampaknya terkait dengan port 465. Saya mencobanya sambil mencari solusi (saya hanya mengerjakan hal yang sama), dan port 465 timeout sepanjang waktu. Jika itu kasus Anda, coba dengan port 587.
eglasius
2
Masalah ini disebabkan oleh "verifikasi kata" (captcha). Jika Anda masuk melalui antarmuka web dengan tangan dan mengisi captcha, SMTP Anda akan mulai berfungsi.
Robert Koritnik
4
FWIW, bekerja untuk saya. Anda harus menggunakan 587 dan .EnableSSL benar. c # 4 / .NET 4 saat ini tidak mendukung alternatif 465 / SSL. tuntutan gmail untuk Mengkonfigurasi klien email lain .
gerryLowry
1
Ikuti jawaban @eglasius dan pastikan Anda mengaktifkan pengaturan "Izinkan Aplikasi Kurang Aman" di Gmail untuk mengizinkan gmail mengautentikasi akun Anda.
user2713706

Jawaban:

290

CVertex, pastikan untuk meninjau kode Anda, dan, jika itu tidak mengungkapkan apa pun, poskan. Saya baru saja mengaktifkan ini pada situs uji ASP.NET yang saya kerjakan, dan berfungsi.

Sebenarnya, pada beberapa titik saya memiliki masalah pada kode saya. Saya tidak melihatnya sampai saya memiliki versi yang lebih sederhana pada program konsol dan melihatnya bekerja (tidak ada perubahan di sisi Gmail karena Anda khawatir tentang). Kode di bawah ini berfungsi seperti sampel yang Anda maksud:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net.Mail;
using System.Net;

namespace ConsoleApplication2
{
    class Program
    {
        static void Main(string[] args)
        {
            var client = new SmtpClient("smtp.gmail.com", 587)
            {
                Credentials = new NetworkCredential("[email protected]", "mypwd"),
                EnableSsl = true
            };
            client.Send("[email protected]", "[email protected]", "test", "testbody");
            Console.WriteLine("Sent");
            Console.ReadLine();
        }
    }
}

Saya juga membuatnya bekerja menggunakan kombinasi web.config, http://msdn.microsoft.com/en-us/library/w355a94k.aspx dan kode (karena tidak ada yang cocok EnableSsldalam file konfigurasi :().

eglasius
sumber
1
Bekerja dengan baik untuk saya dalam aplikasi C # winforms. Terima kasih, Freddy.
Andrew
13
Ingatlah bahwa kode seperti ini secara efektif mentransmisikan kredensial gmail Anda dalam teks biasa ke pengguna ...
Chris Marisic
3
sebenarnya ada pengaturan yang cocok untuk enableSsl di web.config, lihat jawaban di bawah ini
Wiebe Tijsma
4
@Zidad yang ditambahkan pada 4.0.
eglasius
21
Anda mungkin juga perlu mengaktifkan akses untuk "aplikasi yang kurang aman" di halaman pengaturan gmail Anda: google.com/settings/security/lesssecureapps . Ini diperlukan jika Anda mendapatkan pengecualian "` Respons server adalah: 5.5.1 Diperlukan Otentikasi.
Ravendarksky
73

BERIKUT INI AKAN HAMPIR MENJADI JAWABAN UNTUK PERTANYAAN ANDA JIKA SEMUA ORANG LAIN TELAH GAGAL :

Saya mendapatkan kesalahan yang sama persis, ternyata algoritma penguat kata sandi baru Google telah berubah menganggap kata sandi saya saat ini terlalu lemah, dan tidak memberi tahu saya apa-apa tentang hal itu (bahkan bukan pesan atau peringatan) ... Bagaimana saya menemukan ini ? Yah, saya memilih untuk mengubah kata sandi saya untuk melihat apakah itu akan membantu (mencoba yang lain tidak berhasil) dan ketika saya mengubah kata sandi saya, itu berhasil!

Kemudian, untuk percobaan, saya mencoba mengubah kata sandi saya kembali ke kata sandi saya sebelumnya untuk melihat apa yang akan terjadi, dan Gmail sebenarnya tidak mengizinkan saya untuk melakukan ini, dengan alasan "maaf kami tidak dapat membiarkan Anda menyimpan perubahan ini seperti yang Anda pilih kata sandi terlalu lemah "dan tidak akan membiarkan saya kembali ke kata sandi lama saya. Dari sini saya tahu bahwa itu salah karena a) Anda perlu mengganti kata sandi sekali setiap x jumlah bulan atau b). seperti yang saya katakan sebelumnya, algoritma kekuatan kata sandi mereka berubah dan oleh karena itu kata sandi yang lemah yang saya miliki tidak diterima, walaupun mereka tidak mengatakan apa-apa tentang hal ini ketika mencoba masuk ke MANA SAJA! Ini (nomor 2) adalah skenario yang paling mungkin, karena kata sandi saya yang lemah berusia sekitar 4 bulan, dan itu memungkinkan saya menggunakannya di Gmail.

Sangat buruk bahwa mereka tidak mengatakan apa-apa tentang ini, tetapi itu masuk akal. Karena sebagian besar email yang dibajak masuk menggunakan perangkat lunak di luar gmail, dan saya rasa Anda diharuskan memiliki kata sandi yang lebih kuat jika Anda ingin menggunakan Gmail di luar lingkungan Gmail.

Saya harap ini membantu!

Erx_VB.NExT.Coder
sumber
2
Terima kasih, seperti yang Anda katakan ubah kata sandi sehingga kuat dan semua akan berfungsi dengan baik.
Gavin
1
Ini persis masalah saya - semua saran lainnya adalah tentang konfigurasi, tetapi konfigurasi saya sudah benar dari awal, tetapi saya terus mendapatkan kesalahan. Mengubah kata sandi membuat perbedaan,
André Vermeulen
Terima kasih, akhirnya saya dapat menyelesaikan masalah ini, Kasus saya sebenarnya lebih rumit, saya dapat mengirim email dari mesin dev saya (yang ada di Georgia, Caucasus), tetapi email gagal dari server produksi (Inggris) Setelah mengubah kata sandi menjadi satu kompleks semuanya berfungsi sekarang :)
Kirill Chilingarashvili
Terima kasih. Saya memiliki masalah yang sama dengan akun gmail saya yang tidak memiliki kekuatan kata sandi. Saya memperbaruinya dengan yang kuat dan kode saya berfungsi.
Thomas.Benz
Terima kasih, Ya akhirnya hanya ubah kata sandi menjadi yang kuat.
Misha Beskin
66

Selain langkah pemecahan masalah lainnya di atas, saya juga ingin menambahkan bahwa jika Anda telah mengaktifkan otentikasi dua faktor (juga dikenal sebagai verifikasi dua langkah ) pada akun GMail Anda, Anda harus membuat kata sandi khusus aplikasi dan menggunakannya kata sandi yang dihasilkan untuk mengautentikasi melalui SMTP .

Untuk membuatnya, kunjungi: https://www.google.com/settings/ dan pilih Otorisasi aplikasi & situs untuk menghasilkan kata sandi.

John Rasch
sumber
1
Saya tidak mengaktifkan verifikasi 2 langkah, dan tidak masalah seberapa aman saya membuat kata sandi, ini adalah satu-satunya cara saya dapat memperbaiki masalah saya. Saya dapat menggunakan akun gmail lain tanpa 2 langkah dan kata sandi yang lebih lemah tanpa masalah ... untuk menggunakan akun yang benar-benar ingin saya gunakan. Saya harus mengaktifkan 2 langkah dan menggunakan kata sandi khusus aplikasi.
Ian Robertson
Persis apa yang saya lakukan, namun masih kesalahan yang sama: - / Ini bertindak seperti kata sandi saya tidak cukup kuat, tapi saya menggunakan kata sandi aplikasi yang diberikan Gmail kepada saya !!!
Jerry Dodge
54
Turn On Access For Less Secure Apps and it will work for all no need to change password.

Tautan ke Pengaturan Gmail

masukkan deskripsi gambar di sini

Suhail Mumtaz Awan
sumber
1
Ini berhasil untuk saya. Terlebih lagi, ketika saya mencoba mengirim email dengan cara di atas, saya benar-benar mendapat email dari Google di mana mereka secara eksplisit mengatakan bahwa mereka memblokir upaya ini dari aplikasi yang kurang aman dan mereka menyebutkan cara ini untuk memperbaikinya
Demarsch
1
Ini adalah kunci terpenting dalam teka-teki karena saya telah mengatur setiap pengaturan lain dan sepertinya tidak berfungsi. Segera setelah saya mengaktifkan ini, itu hanya bekerja seperti pesona.
Lost
1
Ini berhasil untuk saya. Sandi Aplikasi + SSL + NetworkCredentials. (VB.NET)
CrazyIvan1974
30

Saya juga mengalami masalah dalam mengirim email dari akun gmail saya, yang disebabkan oleh beberapa situasi di atas. Berikut ringkasan cara saya membuatnya bekerja, dan menjaganya tetap fleksibel pada saat yang sama:

  • Pertama-tama siapkan akun GMail Anda:
    • Aktifkan IMAP dan nyatakan jumlah maksimum pesan yang tepat (Anda bisa melakukannya di sini)
    • Pastikan kata sandi Anda setidaknya 7 karakter dan kuat (menurut Google)
    • Pastikan Anda tidak harus memasukkan kode captcha terlebih dahulu. Anda dapat melakukannya dengan mengirim email percobaan dari browser Anda.
  • Buat perubahan di web.config (atau app.config, saya belum pernah mencobanya tetapi saya menganggap itu mudah untuk membuatnya bekerja di aplikasi windows):
<configuration>
    <appSettings>
        <add key="EnableSSLOnMail" value="True"/>   
    </appSettings>

    <!-- other settings --> 

    ...

    <!-- system.net settings -->
    <system.net>
        <mailSettings>
            <smtp from="[email protected]" deliveryMethod="Network">
                <network 
                    defaultCredentials="false" 
                    host="smtp.gmail.com" 
                    port="587" 
                    password="stR0ngPassW0rd" 
                    userName="[email protected]"
                    />
                <!-- When using .Net 4.0 (or later) add attribute: enableSsl="true" and you're all set-->
            </smtp>
        </mailSettings>
    </system.net>
</configuration>
Add a Class to your project:

Imports System.Net.Mail

Public Class SSLMail

    Public Shared Sub SendMail(ByVal e As System.Web.UI.WebControls.MailMessageEventArgs)

        GetSmtpClient.Send(e.Message)

        'Since the message is sent here, set cancel=true so the original SmtpClient will not try to send the message too:
        e.Cancel = True

    End Sub

    Public Shared Sub SendMail(ByVal Msg As MailMessage)
        GetSmtpClient.Send(Msg)
    End Sub

    Public Shared Function GetSmtpClient() As SmtpClient

        Dim smtp As New Net.Mail.SmtpClient
        'Read EnableSSL setting from web.config
        smtp.EnableSsl = CBool(ConfigurationManager.AppSettings("EnableSSLOnMail"))
        Return smtp
    End Function

End Class

Dan sekarang setiap kali Anda ingin mengirim email yang perlu Anda lakukan hanyalah menelepon SSLMail.SendMail:

misalnya di Halaman dengan kontrol PasswordRecovery:

Partial Class RecoverPassword
Inherits System.Web.UI.Page

Protected Sub RecoverPwd_SendingMail(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.MailMessageEventArgs) Handles RecoverPwd.SendingMail
    e.Message.Bcc.Add("[email protected]")
    SSLMail.SendMail(e)
End Sub

End Class

Atau di mana saja dalam kode Anda, Anda dapat menelepon:

SSLMail.SendMail(New system.Net.Mail.MailMessage("[email protected]","[email protected]", "Subject", "Body"})

Saya harap ini membantu siapa saja yang mengalami posting ini! (Saya menggunakan VB.NET tapi saya pikir itu sepele untuk mengubahnya menjadi bahasa .NET.)

Sebas
sumber
+1 "enableSsl =" true "- ini berfungsi untuk aplikasi lawas yang tidak secara khusus mengatur properti Smtp.enableSsl tanpa mengkompilasi ulang rakitan. Tip yang sangat baik!
Metro Smurf
dan jangan lupa firewallnya. Port 587 bukan port yang biasa dibuka.
Guy Lowe
13
Dim SMTPClientObj As New Net.Mail.SmtpClient
SMTPClientObj.UseDefaultCredentials = False
SMTPClientObj.Credentials = New System.Net.NetworkCredential("[email protected]", "mypwd")
SMTPClientObj.Host = "smtp.gmail.com"
SMTPClientObj.Port = 587
SMTPClientObj.EnableSsl = True
SMTPClientObj.Send("[email protected]","[email protected]","test","testbody")

Jika Anda mendapatkan kesalahan seperti "Server SMTP memerlukan koneksi yang aman atau klien tidak diautentikasi. Respons server adalah: 5.5.1 Diperlukan Otentikasi. Pelajari lebih lanjut di" seperti yang saya dapatkan sebelum ini, pastikan baris SMTPClientObj.UseDefaultCredentials = Falsedisertakan dan baris ini harus sebelum SMTPClientObj.Credentials.

Saya memang mencoba untuk beralih 2 baris ini dengan cara yang berlawanan dan kesalahan 5.5.1 Diperlukan Otentikasi dikembalikan.

Terry Chng
sumber
Inilah yang terjadi pada saya. Siapa yang mengira urutan pengaturan properti akan memperbaiki / merusak sesuatu!
Bill Yang
Ini masalah bagi saya juga, saya beralih urutan seperti yang disarankan dan itu berfungsi dengan baik - sakit kepala, ugh!
eth0
13

Oh ... Luar biasa ... Pertama, saya tidak bisa mengirim email karena alasan apa pun. Tetapi setelah saya mengubah urutan kedua baris ini seperti di bawah ini, ia bekerja dengan sempurna.

//(1)
client.UseDefaultCredentials = true;
//(2)
client.Credentials = new System.Net.NetworkCredential("[email protected]", "password");

Semoga bantuan ini !!! :)

Wirol
sumber
1
Ya, pesanan membuat perbedaan. Terutama ketika Anda menetapkan Kredensial properti dan Anda tidak ingin menggunakan kredensial default.
Stefan Cvetanovski
1
Menurut dokumentasi, untuk menggunakan Kredensial Anda perlu mengatur UseDefaultCredentials = false. Namun kedua pengaturan ini tampaknya secara rahasia terjalin. Jika Anda menetapkan UseDefaultCredentials ke true atau false, itu akan memiliki efek samping dari pengaturan Kredensial menjadi nol. Dan tampaknya pengaturan Kredensial dapat menimbulkan efek samping yang ditetapkan UseDefaultCredentials = false. Tidak didokumentasikan sebagai melakukan ini, bisa jadi bug atau hanya pengembang lumpuh.
Aaron
10

Masalahnya bukan pada kemampuan teknis untuk mengirim melalui gmail. Itu bekerja untuk sebagian besar situasi. Jika Anda tidak bisa mendapatkan mesin untuk dikirim, biasanya karena mesin tidak dikonfirmasi dengan manusia di kontrol setidaknya sekali.

Masalah yang dihadapi sebagian besar pengguna adalah Google memutuskan untuk mengubah batas keluar setiap saat. Anda harus selalu menambahkan kode defensif ke solusi Anda. Jika Anda mulai melihat kesalahan, turunkan kecepatan kirim Anda dan berhenti mengirim untuk sementara waktu. Jika Anda terus mencoba untuk mengirim Google, kadang-kadang akan menambah waktu tambahan untuk periode penundaan Anda sebelum Anda dapat mengirim lagi.

Apa yang saya lakukan dalam sistem saya saat ini adalah mengirim dengan penundaan 1,5 detik antara setiap pesan. Lalu jika saya mendapatkan kesalahan, berhenti selama 5 menit dan kemudian mulai lagi. Ini biasanya bekerja dan akan memungkinkan Anda untuk mengirim hingga batas akun (terakhir saya memeriksa 2.000 untuk login pelanggan utama per hari).

Jason Short
sumber
1
Inilah masalah saya sebenarnya! Ketika saya digunakan untuk Produksi, saya mendapatkan masalah dan setelah saya login ke Gmail di server itu sendiri, itu mulai berfungsi lagi.
ThisGuy
9

Saya memiliki masalah yang sama, tetapi ternyata perlindungan virus saya memblokir email "spam" keluar. Mematikan ini memungkinkan saya untuk menggunakan port 587 untuk mengirim email SMTP melalui GMail

pengguna464329
sumber
Saya menonaktifkan Windows Defender dan itu juga mulai bekerja.
MorioBoncz
9

Jika tidak ada hal lain yang berhasil di sini untuk Anda, Anda mungkin perlu mengizinkan akses ke akun gmail Anda dari aplikasi pihak ketiga. Ini masalah saya. Untuk mengizinkan akses lakukan hal berikut:

  1. Masuk ke akun gmail Anda.
  2. Kunjungi halaman ini https://accounts.google.com/DisplayUnlockCaptcha dan klik tombol untuk mengizinkan akses.
  3. Kunjungi halaman ini https://www.google.com/settings/security/lesssecureapps dan aktifkan akses untuk aplikasi yang kurang aman.

Ini bekerja untuk saya, berharap ini bekerja untuk orang lain!

Celt
sumber
8

Saya tidak yakin versi NET mana yang diperlukan untuk ini karena eglasius menyebutkan tidak ada enableSslpengaturan yang cocok (Saya menggunakan. NET 4.0, tapi saya curiga itu bekerja di. NET 2.0 atau lebih baru), tetapi konfigurasi ini justed bekerja untuk saya (dan tidak mengharuskan Anda menggunakan konfigurasi program apa pun):

<system.net>
  <mailSettings>
    <smtp from="[email protected]" deliveryMethod="Network">
      <network defaultCredentials="false" enableSsl="true" host="smtp.gmail.com" port="587" password="password" userName="[email protected]"/>
    </smtp>
  </mailSettings>
</system.net>

Anda mungkin harus mengaktifkan POP atau IMAP di akun Gmail Anda terlebih dahulu: https://mail.google.com/mail/?shva=1#settings/fwdandpop

Saya sarankan mencobanya dengan klien surat biasa dulu ...

Wiebe Tijsma
sumber
2
itu baru 4.0, bandingkan versi di -> msdn.microsoft.com/en-us/library/ms164242(v=VS.90).aspx
eglasius
Hai Eglasius ... OK terima kasih untuk itu! Anehnya mereka hanya memiliki pendekatan programatik pada pra-4.0. Saya kira kita semua melupakan banyak hal :)
Wiebe Tijsma
6

@Andres Pompiglio: Ya itu benar Anda harus mengubah kata sandi Anda setidaknya sekali .. kode ini berfungsi dengan baik:

//Satrt Send Email Function
public string SendMail(string toList, string from, string ccList,
    string subject, string body)
{

    MailMessage message = new MailMessage();
    SmtpClient smtpClient = new SmtpClient();
    string msg = string.Empty;
    try
    {
        MailAddress fromAddress = new MailAddress(from);
        message.From = fromAddress;
        message.To.Add(toList);
        if (ccList != null && ccList != string.Empty)
            message.CC.Add(ccList);
        message.Subject = subject;
        message.IsBodyHtml = true;
        message.Body = body;
        // We use gmail as our smtp client
        smtpClient.Host = "smtp.gmail.com";   
        smtpClient.Port = 587;
        smtpClient.EnableSsl = true;
        smtpClient.UseDefaultCredentials = true;
        smtpClient.Credentials = new System.Net.NetworkCredential(
            "Your Gmail User Name", "Your Gmail Password");

        smtpClient.Send(message);
        msg = "Successful<BR>";
    }
    catch (Exception ex)
    {
        msg = ex.Message;
    }
    return msg;
}
//End Send Email Function

DAN Anda dapat membuat panggilan ke fungsi dengan menggunakan:

Response.Write(SendMail(recipient Address, "[email protected]", "ccList if any", "subject", "body"))
maxcoder
sumber
Server SMTP memerlukan koneksi yang aman atau klien tidak diautentikasi. Respons server adalah: 5.5.1 Diperlukan Otentikasi. Pelajari lebih lanjut di
Savas Adar
6

Saya menggunakan koneksi VPN perusahaan. Itulah alasan mengapa saya tidak bisa mengirim email dari aplikasi saya. Ini berfungsi jika saya memutuskan sambungan dari VPN.

Ned
sumber
5

Saya juga menemukan bahwa akun yang saya gunakan untuk masuk telah dinonaktifkan oleh google karena beberapa alasan. Setelah saya mengatur ulang kata sandi (sama seperti dulu), maka saya bisa mengirim email dengan baik. Saya juga mendapatkan pesan 5.5.1.

RKL
sumber
5

Saya juga telah mencoba banyak solusi tetapi membuat beberapa perubahan itu akan berhasil

host = smtp.gmail.com
port = 587
username = email@gmail.com
password = password
enabledssl = true

dengan parameter smtpclient di atas berfungsi di gmail

Suresh
sumber
5

Saya mendapatkan kesalahan yang sama dan tidak ada solusi di atas yang membantu.

Masalah saya adalah saya menjalankan kode dari server jauh, yang tidak pernah digunakan untuk masuk ke akun gmail.

Saya membuka browser di server jarak jauh dan masuk ke gmail dari sana. Ia menanyakan pertanyaan keamanan untuk memverifikasi itu saya karena ini adalah lokasi baru. Setelah melakukan pemeriksaan keamanan, saya dapat mengautentikasi melalui kode.

Vlad Tamas
sumber
4

Saya mengalami kesalahan yang sama ( "Server SMTP memerlukan koneksi aman atau klien tidak diautentikasi. Respons server adalah: 5.5.1 Diperlukan Otentikasi. Pelajari selengkapnya di" ) dan mengetahui bahwa saya menggunakan kata sandi yang salah. Saya memperbaiki kredensial login, dan itu dikirim dengan benar.

Saya tahu ini terlambat, tapi mungkin ini akan membantu orang lain.

Albert Bori
sumber
4

Hal lain yang saya temukan adalah Anda harus mengubah kata sandi Anda setidaknya sekali. Dan coba gunakan kata sandi tingkat keamanan (jangan gunakan pengguna yang sama dengan kata sandi, 123456, dll.)

Peter Mortensen
sumber
4

Namun solusi lain yang mungkin untuk Anda. Saya mengalami masalah serupa yang menghubungkan ke gmail melalui IMAP. Setelah mencoba semua solusi yang saya temui yang akan Anda baca di sini dan di tempat lain di SO (mis. Aktifkan IMAP, aktifkan akses yang kurang aman ke email Anda, menggunakan https://accounts.google.com/b/0/displayunlockcaptcha dan seterusnya), saya benar-benar membuat akun gmail baru sekali lagi.

Dalam pengujian asli saya, akun gmail pertama yang saya buat, saya telah terhubung ke akun gmail utama saya. Ini mengakibatkan perilaku yang tidak menentu di mana akun yang salah sedang direferensikan oleh google. Misalnya, menjalankan https://accounts.google.com/b/0/displayunlockcaptcha membuka akun utama saya alih-alih yang saya buat untuk tujuan itu.

Jadi ketika saya membuat akun baru dan tidak menghubungkannya ke akun utama saya, setelah mengikuti semua langkah yang tepat seperti di atas, saya menemukan bahwa itu berfungsi dengan baik!

Saya belum mengkonfirmasi ini (mis. Direproduksi), tetapi ternyata itu berhasil untuk saya ... semoga membantu.

sinewave440hz
sumber
4
  1. Pertama periksa pengaturan akun gmail Anda & nyalakan dari "Akses untuk aplikasi yang kurang aman" masukkan deskripsi gambar di sini

Kami sangat menyarankan Anda menggunakan aplikasi yang aman, seperti Gmail, untuk mengakses akun Anda. Semua aplikasi yang dibuat oleh Google memenuhi standar keamanan ini. Di sisi lain, menggunakan aplikasi yang kurang aman dapat membuat akun Anda rentan. Belajarlah lagi.

  1. Set

    smtp.UseDefaultCredentials = false;

    sebelum

    smtp.Credentials = new NetworkCredential(fromAddress, fromPassword);
reza.cse08
sumber
4

Ada satu atau lebih alasan untuk kesalahan ini.

  • Masuk dengan Gmail Anda (atau yang lain jika) di sistem lokal Anda.

  • Juga periksa untuk Aplikasi Kurang Aman dan Setel ke "Aktifkan" di sini adalah Tautan untuk GMAIL. https://www.google.com/settings/security/lesssecureapps

  • periksa EnableSsl di kode Email Anda, dan setel juga menjadi true.

    smtp.EnableSsl = true;
  • Periksa juga port yang Anda gunakan saat ini. 25 adalah Global, tetapi Anda dapat memeriksanya untuk orang lain juga seperti 587. periksa di sini. Apakah semua komunikasi SMTP terjadi di atas 25?

  • JIKA ANDA BERADA DI REMOTE : Periksa jawaban Vlad Tamas di atas.

Bharat
sumber
bagaimana jika saya tidak ingin mengaktifkan pengaturan aplikasi yang kurang aman, bagaimana klien email lainnya melakukan ini mengapa saya tidak dapat melakukan hal yang sama dengan c #?
user734028
3

Anda juga dapat terhubung melalui port 465, tetapi karena beberapa keterbatasan namespace System.Net.Mail Anda mungkin harus mengubah kode Anda. Ini karena namespace tidak menawarkan kemampuan untuk membuat koneksi SSL implisit. Ini dibahas di http://blogs.msdn.com/b/webdav_101/archive/2008/06/02/system-net-mail-with-ssl-to-authenticate-against-port-465.aspx , dan saya telah memberikan contoh bagaimana menggunakan CDO (Objek Data Kolaboratif) dalam diskusi lain ( GMail SMTP melalui C #. Kesalahan bersih pada semua port ).

Bryan Allred
sumber
3

Saya memiliki masalah ini diselesaikan. Aparently pesan itu digunakan dalam beberapa tipe kesalahan. Masalah saya adalah bahwa saya telah mencapai maksimum 500 surat terkirim.

masuk ke akun dan coba kirim surat secara manual. Jika batas telah tercapai, itu akan memberi tahu Anda

Ayson Baxter
sumber
2
smtp.Host = "smtp.gmail.com"; //host name
smtp.Port = 587; //port number
smtp.EnableSsl = true; //whether your smtp server requires SSL
smtp.DeliveryMethod = System.Net.Mail.SmtpDeliveryMethod.Network;
smtp.Credentials = new NetworkCredential(fromAddress, fromPassword);
smtp.Timeout = 20000;
somesh
sumber
1

Ubah kata sandi gmail Anda dan coba lagi, itu akan berfungsi setelah itu.

Tidak tahu mengapa, tetapi setiap kali Anda mengubah hosting, Anda harus mengubah kata sandi.

Jo Smo
sumber