Google SMTP Error: 454 4.7.0 Terlalu banyak upaya login, silakan coba lagi nanti


17

Saya menemukan bahwa walaupun dimungkinkan untuk menggunakan Gmail / Google Apps sebagai server SMTP untuk penggunaan skrip, jika terlalu banyak email yang dikirim, saya mulai menerima pesan kesalahan:

SMTP Error: 454 4.7.0 Too many login attempts, please try again later.

Biasanya jika saya menunggu satu atau dua jam, saya bisa mengirimkan 100 email lagi atau lebih, tetapi saya akan segera mengalami pesan kesalahan yang sama lagi.

Jawaban:


12

Saya menemukan bahwa masalahnya adalah meskipun kami memiliki catatan SPF yang disiapkan untuk domain kami, kami tidak memiliki catatan DKIM yang terkait dengan domain kami. Untuk menambahkan catatan DKIM di Google Apps, Anda harus melakukan yang berikut:

  • Buka Konsol Admin
  • Klik pada "Google Apps"
  • Klik pada "Gmail"
  • Gulir ke bawah hingga Anda melihat "Otentikasi Email" dan klik itu
  • Pilih domain yang ingin Anda tambahkan DKIM
  • Ketika ditanya awalan apa yang ingin Anda gunakan, cukup gunakan default 'google'

Anda kemudian akan melihat catatan TXT dalam dua bagian, satu bagian memiliki domain dan yang lainnya memiliki catatan TXT yang sebenarnya. Anda harus masuk ke pengaturan DNS Anda di server Anda untuk domain Anda dan menambahkan catatan ini. Jika panel kontrol DNS Anda tidak memungkinkan Anda untuk menambahkan domain google._domainkey, cukup buat domain yang sepenuhnya memenuhi syarat seperti google._domainkey.example.com.

Setelah Anda melakukan ini, berikan catatan DNS sedikit waktu untuk disebarkan dan kemudian klik "Mulai Otentikasi" di panel admin Google Apps. Jika Anda melihat tanda centang hijau, Anda telah melakukannya, dan email akan mulai mengalir melalui server SMTP sekali lagi.


Bagaimana jika Anda tidak mengendalikan server DNS?
Ismael

1
Penyelamat. Tampaknya gmail akan memeriksa server otoritatif untuk catatan TXT, jadi Anda tidak harus menunggu untuk propogasi DNS penuh - untuk sebagian besar perubahan yang dilakukan hari ini melalui file manager zona DNS, Anda tidak perlu menunggu lebih dari beberapa detik agar perubahan berlaku.
JT Taylor

4

Anda tidak boleh mengautentikasi untuk setiap email yang harus Anda kirim.

Di awal proses:

Session session = loadSession();
Transport transport = session.getTransport("smtp");
transport.connect("example@gmail.com", "password");

Setelah itu, gunakan objek transportasi untuk mengirim setiap email tanpa sesi awal:

transport.sendMessage(message, message.getAllRecipients());

Setelah Anda mengirim semua email, Anda harus menutup koneksi:

transport.close();

0

solusi dari @ victorpacheco3107 bekerja untuk saya, ini yang saya lakukan di ruby:

settings = {
  address:        "smtp.gmail.com",
  port:           587,
  domain:         "mydomain.com",
  user_name:      "user@mydomain.com",
  password:       "password",
  authentication: "plain"
}

smtp_conn = Net::SMTP.new(settings[:address], settings[:port])
smtp_conn.enable_starttls_auto
smtp_conn = smtp_conn.start(settings[:domain],
                            settings[:user_name],
                            settings[:password],
                            settings[:authentication])
Mail.defaults do
  delivery_method :smtp_connection, { :connection => smtp_conn }
end

# send mails..
mail = Mail.new
mail.to('...')
# more mail stuff..
mail.deliver!

# after all mails are sent, end session
smtp_conn.finish

0

Menggunakan SMTP ketika Anda mengirim email massal itu masuk dengan setiap email dan kemudian keluar. Karena itu, Google memblokir koneksi Anda. Apa yang berhasil bagi saya adalah mengatur SMTPKeepAlive menjadi true.


1
Sudah disarankan untuk tidak masuk untuk setiap surat.
RalfFriedl
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.