IT Share you

Rails 콘솔에서 이메일 보내기

shareyou 2021. 1. 9. 10:51
반응형

Rails 콘솔에서 이메일 보내기


프로덕션 서버의 콘솔에서 일부 메일을 보내려고하는데 메일이 나가지 않습니다. 이유를 알 수 없습니다. sendmail로 표준 이메일 설정이 있습니다. Mailer.deliver_ 메서드를 호출하면 다음과 같이 돌아옵니다.

#<TMail::Mail port=#<TMail::StringPort:id=0x3fe1c205dbcc> bodyport=#<TMail::StringPort:id=0x3fe1c2059e00>>

편집 : 추가 정보 :

예를 들어, 새 사용자가 등록 할 때 컨트롤러에 "환영"이메일을 보내기 위해 다음 줄이 있습니다.

 Mailer.deliver_signup(@user, request.host_with_port, params[:user][:password])

이것은 잘 작동합니다. 콘솔에서도 똑같은 일을 할 수 있어야한다고 생각했습니다.

user = User.find(1)
Mailer.deliver_signup(user, "mydomainname.com", "password")

이 작업을 수행하면 Tmail :: StringPort 개체를 다시 가져 오지만 메일이 전송되지 않는 것 같습니다 (이를 테스트하기 위해 자신에게 이메일을 보내려고합니다).

도움이 될 경우를 대비하여 우분투 서버에 있습니다. 감사합니다-최대


Rails Console에서 이메일을 보내기 위해서는 먼저 액션 메일러 설정을 위해 콘솔에서이 설정을 실행해야합니다.

ActionMailer::Base.delivery_method = :smtp 
ActionMailer::Base.smtp_settings = {
  address: 'smtp.gmail.com', 
  port: 587, 
  domain: 'gmail.com',
  authentication: 'plain', 
  enable_starttls_auto: true, 
  user_name: 'your@gmail.com',
  password: 'yourpassword'
}

그 후 이메일 발송 코드를 실행하면 이메일을 발송합니다.

UserMailer.activation_instructions(@user).deliver_now

더 빠른 버전 :

ActionMailer::Base.mail(
  from: "test@example.co", 
  to: "valid.recipient@domain.com", 
  subject: "Test", 
  body: "Test"
).deliver_now

오늘 아침에 내가 전화 한 Rails 3 앱에서 비슷한 문제가 발생했습니다.

UserMailer.activation_instructions(@user)

이것은 나에게 데이터를 줬지만 이메일을 보내지 않았습니다. 보내려면 다음과 같이 전화했습니다.

UserMailer.activation_instructions(@user).deliver

이것은 트릭을했다. 바라건대 이것은 당신에게도 효과가있을 것입니다!


당신이하려는 일을 이해한다면 나는 100 %가 아닙니다.

인터넷으로 전자 메일을 보내려는 경우 해당 전자 메일을 적절한 전자 메일 서버로 전달하는 방식으로 sendmail을 구성해야합니다. 사용하는 Ubuntu 릴리스에 따라 패키지를 재구성하여이를 수행 할 수 있습니다.

sendmail 대신 procmail을 사용하려는 경우에도 생각할 수 있습니다.

다음을 사용하여 전자 메일 구성을 재구성 할 수 있습니다.

dpkg-reconfigure sendmail

of use procmail instead if you use that package. The configuration dialogue gives you some option where you can configure it to forward all mail to the appropriate e-mail server. However, you need to think if you need authentication or if that server just accepts e-mails from your server.

ReferenceURL : https://stackoverflow.com/questions/3267213/send-email-from-rails-console

반응형