Google SMTP 오류 : 454 4.7.0 로그인 시도 횟수가 너무 많습니다. 나중에 다시 시도하십시오 많은 이메일이 전송되면 오류

스크립트 사용을 위해 Gmail / Google Apps를 SMTP 서버로 사용할 수는 있지만 너무 많은 이메일이 전송되면 오류 메시지가 표시됩니다.

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

보통 한두 시간 정도 기다렸다가 다시 100 개의 이메일을 보낼 수는 있지만 곧 같은 오류 메시지가 다시 나타납니다.



답변

문제는 도메인에 SPF 레코드를 설정했지만 도메인과 관련된 DKIM 레코드가 없다는 것입니다. Google Apps에 DKIM 레코드를 추가하려면 다음을 수행해야합니다.

  • 관리 콘솔로 이동
  • “Google Apps”를 클릭하십시오
  • “Gmail”을 클릭하십시오
  • “이메일 인증”이 보일 때까지 아래로 스크롤하여 클릭하십시오.
  • DKIM을 추가 할 도메인을 선택하십시오
  • 사용할 접두사를 물으면 기본값 ‘google’을 사용하십시오.

그런 다음 TXT 레코드를 두 부분으로 볼 수 있습니다. 한 부분에는 도메인이 있고 다른 부분에는 실제 TXT 레코드가 있습니다. 도메인의 서버에서 DNS 설정으로 이동하여이 레코드를 추가해야합니다. DNS 제어판에서 도메인을 추가 할 수없는 google._domainkey경우 도메인을 정규화 된 도메인으로 만드십시오 google._domainkey.example.com.

이렇게 한 후 DNS 레코드를 전파 할 시간을 조금 준 다음 Google Apps 관리자 패널에서 “인증 시작”을 클릭하십시오. 녹색 확인 표시가 보이면 완료된 것이므로 전자 메일이 SMTP 서버를 통해 다시 시작됩니다.


답변

보내야 할 각 이메일에 대해 인증하지 않아야합니다.

프로세스 시작시 :

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

그런 다음 전송 세션을 사용하여 세션을 시작하지 않고 각 메일을 보내십시오.

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

모든 이메일을 보낸 후 연결을 닫아야합니다.

transport.close();


답변

@ victorpacheco3107의 솔루션이 나를 위해 일했습니다. 이것은 루비에서 한 것입니다.

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


답변

대량 이메일을 보낼 때 SMTP를 사용하면 모든 단일 메일로 로그인 한 다음 로그 아웃합니다. 그 때문에 Google은 연결을 차단합니다. 나를 위해 일한 것은 SMTPKeepAlive를 true로 설정하는 것입니다.


답변