Я использую почтовую программу 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') %>
Пожалуйста, помогите мне решить эту проблему.
Спасибо