Отсутствует (на доменном имени) ссылка для сброса пароля, отправленная SendGrid - PullRequest
0 голосов
/ 22 февраля 2020

Я использую почтовую программу SendGrid на Ruby и Rails framework. В шаблоне электронной почты для сброса пароля мы отправляем ссылку для сброса пароля в следующем формате (https://subdomain.domainname.com/password_reset/token/?some_other_params). В большинстве случаев ссылка для сброса пароля отправляется получателю по электронной почте в правильном формате, но для некоторых клиентов она не отправляет правильную ссылку. Проблема, которую мы заметили, заключается в том, что «точка отсутствует между (поддомен и имя домена) или (имя домена и com) случайным образом, и получающаяся в результате ссылка для сброса пароля на клиента выглядит как (https://subdomaindomainname.com/password_reset/token/?some_other_params), что является неправильной ссылкой. Эта проблема возникает только на производстве и происходит очень случайно.

Я проверил нашу переменную, у которой есть доменное имя в нашем исходном коде, и проверил код, который генерирует URL, а также тщательно проверил это, и их проблема не возникает наш исходный код. В Google я вижу этот вопрос. Я не понимаю, как программно решить это на почтовом клиенте SendGrid.

mailer.rb

class Mailer < ActionMailer::Base
  sendgrid_category Rails.env
  default_url_options[:host] = APP_URL

end

config / environment / production.rb

config.action_mailer.delivery_method = :smtp
config.action_mailer.smtp_settings = {
    :address => "smtp.sendgrid.net",
    :user_name => ENV['SENDGRID_USERNAME'],
    :password => ENV['SENDGRID_PASSWORD'],
    :domain => "subdomain.domainname.com",
    :port => 587,
    :authentication => "plain",
    :enable_starttls_auto => true
}

APP_URL = "subdomain.domainname.com"

mailer_helper.rb

  def link_to_with_ga(*args)
    args[1] = append_ga args[1], 'html'
    link_to *args 
  end

  def append_ga(link, utm_content)
    link << "#{link.include?('?') ? '&' : '?' }#{@ga_tag}&utm_content=#{utm_content}"
  end

_reset_password_view.rb

  <%= link_to_with_ga(t("users.reset_password"), reset_password_url(:token => @token, :locale=>@user_locale,:protocol => ( Rails.env.eql?('development') ? 'http' : 'https' )),:id => 'reset_link') %>

Пожалуйста, помогите мне решить эту проблему.

Спасибо

...