Ho un'app per rails 4. Ho configurato ActionMailer e posso inviare e-mail di conferma dell'ordine tramite localhost e gmail.Sendgrid impostato su Rails 4
Ho installato Sendgrid su Heroku e ho seguito le istruzioni di installazione. Ho un Net::SMTPSyntaxError (501 Syntax error
mia environment.rb (ho SendGrid utente/pwd in application.yml)
ActionMailer::Base.smtp_settings = {
:address => 'smtp.sendgrid.net',
:port => '587',
:authentication => :plain,
:user_name => ENV['SENDGRID_USERNAME'],
:password => ENV['SENDGRID_PASSWORD'],
:domain => 'heroku.com',
:enable_starttls_auto => true
}
in production.rb - l'unica impostazione actionamailer che ho è questo. Ho questo come segnaposto per mettere il vero dominio in seguito. Attualmente sto usando herokuapp.com.
config.action_mailer.default_url_options = { host: 'localhost:3000' }
nel mio orders_controller all'interno dell'ordine creare metodo, che io chiamo il seguito.
AutoNotifier.orderconf_email(current_user, @order).deliver
auto_notifier.rb
class AutoNotifier < ActionMailer::Base
default from: "Test Email"
def orderconf_email(current_user, order)
@buyer = current_user
@order = order
mail(to: @buyer.email, subject: 'Thank you for your order.')
end
end
Che cosa mi manca? Funziona su localhost con gmail quindi mi manca qualcosa nelle impostazioni sendgrid o nel file default_url nel file production.rb.
Cosa pila si utilizza in produzione? Hai ENV in heroku config? Dato che heroku aggiunge automaticamente ENV solo su Bamboo stack, su Cedar è necessario aggiungerli manualmente, come so. –
Sono su Cedar. Sì, vedo sendgrid user/pwd quando eseguo heroku config. – Moosa
Prova a cambiare l'host in production.rb sul tuo bla-bla-bla.herokuapp.com. In effetti, non ho nessuna riga config.action_mailer ... in production.rb, e Sendgrid funziona bene. –