Подтвердить что ты не робот

Отправить личное сообщение для rails console

Я пытаюсь отправить некоторые сообщения с консоли на моем рабочем сервере, и они не выходят. Я не могу понять, почему. У меня есть только стандартная настройка электронной почты с помощью sendmail. Когда я вызываю метод Mailer.deliver_, я возвращаю его обратно:

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

EDIT: добавлена ​​дополнительная информация:

Итак, например, у меня есть эта строка в моем контроллере, когда новый пользователь подписывается, чтобы отправить им приветственное письмо:

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

Это прекрасно работает. Я думал, что я должен иметь возможность делать то же самое с консоли, например

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

Когда я это сделаю, я возвращаю объект Tmail:: StringPort, но почта, похоже, не отправляется (я пытаюсь отправить электронные письма себе, чтобы проверить это).

Я на сервере ubuntu, если это помогает. спасибо - max

4b9b3361

Ответ 1

Для отправки электронной почты из 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: '[email protected]',
  password: 'yourpassword'
}

После этого Если мы выполним отправку кода электронной почты, он отправит электронное письмо.

UserMailer.activation_instructions(@user).deliver_now

Ответ 3

Я столкнулся с аналогичной проблемой сегодня утром в приложении Rails 3, где я звонил:

UserMailer.activation_instructions(@user)

Это дало мне данные, но не отправило электронное письмо. Чтобы отправить, я позвонил:

UserMailer.activation_instructions(@user).deliver

Это сделало трюк. Надеюсь, это может сработать и для вас!

Ответ 4

Я не 100%, если понимаю, что вы пытаетесь сделать.

Если вы пытаетесь отправить электронные письма в Интернет, ваш sendmail должен быть настроен таким образом, чтобы пересылать эти сообщения на соответствующий сервер электронной почты. В зависимости от того, какую версию Ubuntu вы используете, вы можете просто перенастроить пакет для этого.

Вы также можете подумать, хотите ли вы использовать procmail вместо sendmail.

Вы можете перенастроить конфигурацию электронной почты с помощью

dpkg-reconfigure sendmail

использовать procmail, если вы используете этот пакет. В диалоговом окне конфигурации вы можете выбрать способ перенаправления всей почты на соответствующий почтовый сервер. Однако вам нужно подумать, нужна ли вам аутентификация или если этот сервер просто принимает сообщения электронной почты с вашего сервера.