Google SMTP Hatası: 454 4.7.0 Çok fazla giriş denemesi, lütfen daha sonra tekrar deneyin


17

Komutlu kullanım için Gmail / Google Apps'ı bir SMTP sunucusu olarak kullanmak mümkün olsa da, çok fazla e-posta gönderildiyse hata mesajları almaya başladım:

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

Genellikle bir veya iki saat beklersem 100 e-posta gönderebilirim, ancak kısa süre içinde aynı hata mesajıyla tekrar karşılaşırdım.

Yanıtlar:


12

Sorunun, alanlarımız için SPF kayıtları oluşturmamıza rağmen, alanımızla ilişkili bir DKIM kaydımızın olmaması olduğunu keşfettim. Google Apps'a bir DKIM kaydı eklemek için aşağıdakileri yapmanız gerekir:

  • Yönetici Konsolu'na gidin
  • "Google Apps" ı tıklayın
  • "Gmail" i tıklayın
  • "E-posta Kimlik Doğrulaması" nı görene kadar sayfayı aşağı kaydırın ve tıklayın
  • DKIM eklemek istediğiniz alanı seçin
  • Hangi öneki kullanmak istediğinizi sorduğunda, varsayılan 'google'

Daha sonra iki kısımda bir TXT kaydı görürsünüz, bir parça etki alanına ve diğeri de gerçek TXT kaydına sahiptir. Alan adınız için sunucunuzdaki DNS ayarlarınıza gitmeli ve bu kaydı eklemelisiniz. DNS kontrol paneliniz etki alanını eklemenize izin vermiyorsa, etki google._domainkeyalanını tamamen nitelikli hale getirin google._domainkey.example.com.

Bunu yaptıktan sonra, DNS kaydına yayılması için biraz zaman verin ve ardından Google Apps yönetici panelinde "Kimlik Doğrulamasını Başlat" ı tıklayın. Yeşil bir onay işareti görürseniz, bunu yaptınız ve e-posta SMTP sunucusundan tekrar akmaya başlamalıdır.


DNS sunucusunun kontrolü sizde değilse ne olur?
İshmael

1
Bir cankurtaran. Gmail'in TXT kaydı için yetkili sunucuları kontrol edeceği anlaşılıyor, bu nedenle tam DNS propogation için beklemek zorunda kalmamalısınız - bu günlerde bir DNS bölgesi dosya yöneticisi aracılığıyla yapılan çoğu değişiklik için birkaç taneden fazla beklemek zorunda kalmayacaksınız değişikliğin geçerlilik kazanması için saniye.
JT Taylor

4

Göndermeniz gereken her e-posta için kimlik doğrulaması yapmamalısınız.

Sürecin başında:

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

Ardından, her postayı başlatma oturumu olmadan göndermek için taşıma nesnesini kullanın:

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

Tüm e-postaları gönderdikten sonra bağlantıyı kapatmalısınız:

transport.close();

0

@ victorpacheco3107'den çözüm benim için çalıştı, bu yakutta yaptım:

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

Toplu e-posta gönderdiğinizde SMTP'yi kullanarak her bir postayla giriş yapın ve ardından oturumu kapatın. Bu googles bağlantınızı engeller. Benim için işe yarayan şey SMTPKeepAlive'yi doğru yapmaktır.


1
Her bir posta için giriş yapılmaması zaten önerilmişti.
RalfFriedl
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.