Nie mogę znaleźć samouczka krok po kroku, jak zintegrować interfejs API Sendgrid w aplikacji Ruby on Rails. Jestem całkiem nowy, więc może brakuje mi czegoś oczywistego.Funkcja API Sendgrid dla Ruby on Rails
Chciałbym użyć web sendgrid API zamiast metody dostarczania smtp (mailgun mówi o korzyściach z web API dla metody SMTP tutaj: https://documentation.mailgun.com/quickstart-sending.html, i myślałem, że Sendgrid miałby te same korzyści lub Mogłabym później przełączyć się na mailgun).
Po zainstalowaniu sendgrid gem (https://github.com/sendgrid/sendgrid-ruby), dokumentacja mówi mi "Tworzenie nowego klienta z SendGrid API Key", i że mogę to zrobić na 2 sposoby:
require 'sendgrid-ruby'
# As a hash
client = SendGrid::Client.new(api_key: 'YOUR_SENDGRID_APIKEY')
# Or as a block
client = SendGrid::Client.new do |c|
c.api_key = 'YOUR_SENDGRID_APIKEY'
end
Gdzie konkretnie w moim wniosek czy mam umieścić ten kod? Czy powinienem umieścić to w moim programie pocztowym, aplikacji mailer lub w pliku config/environments/production.rb?
Wziąłem spojrzeć na tym kursie, który idzie przez jak skonfigurować API Mailgun: https://launchschool.com/blog/handling-emails-in-rails
Według tego poradnika to wygląda linii client = SendGrid::Client.new(api_key: 'YOUR_SENDGRID_APIKEY')
powinny rzeczywiście iść do samej metody przesyłkę. Poniżej znajduje się przykład launchschool.com (przypuszczalnie zastępując mailgun konkretne informacje z sendgrid info):
class ExampleMailer < ActionMailer::Base
def sample_email(user)
@user = user
mg_client = Mailgun::Client.new ENV['api_key']
message_params = {:from => ENV['gmail_username'],
:to => @user.email,
:subject => 'Sample Mail using Mailgun API',
:text => 'This mail is sent using Mailgun API via mailgun-ruby'}
mg_client.send_message ENV['domain'], message_params
end
end
Dodatkowo, w jaki sposób mogę uzyskać moja metoda Mailer wysłać widok mailera zamiast prostego tekstu jak wskazano w Przykład launchschool? Na przykład, zamiast wysyłać tekst "Ta poczta jest wysyłana za pomocą ..." chciałbym wysłać widok mailera (coś w stylu account_activation.html.erb).
Wreszcie, używam Devise w mojej aplikacji i chciałbym, aby Devise użył interfejsu API do wysyłania wiadomości e-mail (np. Resetowania hasła itp.). Czy to oznacza, że muszę utworzyć niestandardowy program pocztowy dla Devise? Jeśli tak, jak mam to zrobić?
Zgodnie z Devise (https://github.com/plataformatec/devise/wiki/How-To:-Use-custom-mailer), powinienem "stworzyć klasę, która rozszerza Devise :: Mailer". Czy to znaczy, że po prostu robię plik w moim folderze mailer z informacjami zawartymi w dokumentach? Czy potrzebuję osobnego programu pocztowego do pracy w Devise lub czy mój program pocztowy może dziedziczyć po programie pocztowym Devise? Na koniec, w jaki sposób mam powiedzieć, jak używać aplikacji sendi web api do wysyłania wiadomości e-mail (zamiast prostej metody SMTP)?
Przepraszamy za długie pytanie, ale mam nadzieję, że inni uznają to za przydatne.
Dzięki!
Nie próbowałem tego, ale wydaje się obiecujące: https://github.com/eddiezane/sendgrid-actionmailer –