Как найти полезную нагрузку электронного письма Sendgrid, отправленного ActionMailer? - PullRequest
1 голос
/ 20 июня 2019

Я работаю со службой поддержки SendGrid, чтобы определить, почему категории перестали работать в моих многоэтапных кампаниях по электронной почте (подходит только текстовая). Если я намеренно установлю тип содержимого электронного письма в формате HTML как «text / plain», электронное письмо отобразит данные заголовка, текст и необработанный html на одном электронном письме, но получит свою категорию. В противном случае электронная почта выглядит правильно, но нет категории.

SendGrid попросил меня прислать им копию полезной нагрузки, и я не уверен, что это такое и как его найти. Они сказали: «Если вы знакомы с проведением теста telnet, то это то, что мы ищем». Я не знаком с тестами telnet. Это информация из скриншота, который они предоставили в качестве примера того, что они ищут:

220 Hi! This is Rob's hMailServer!
ehlo panoply-tech.com
250-SAGE013963
250-SIZE 20480000
250 AUTH LOGIN PLAIN
AUTH LOGIN
334 VXN1ea5bbVUG
YT3TQBHbhM9WBHKTDGUjeD65WQ20=
235 authenticated.
MAIL FROM: mayes@panoply-tech.com
250 OK
RCPT TO: cstickings@demosagecrm.com
250 OK
DATA
354 OK, send.
Subject: This is a test email
Hi Clemence,
Just sending you a test email.
.
250 Queued <25.927 seconds>

Я пошел в .rvm / gems / ruby-2.3.3 / gems / actionmailer-4.2.8 / lib / action_mailer / base.rb и нашел метод с именем "set_payload_for_mail", но то, что он производит, похоже на их пример:

{"mailer":"B2c::B2cSendGridMailer",
"message_id":"5d0b979767c26_16f2c3fc04043f9c84968e@Domain-Person.local.mail",
"subject":"TEST: 26_txt","to":["person@domain.com"],
"from":["info@another.com"],"date":"2019-06-20T09:26:31.000-05:00",
"mail":"Date: Thu, 20 Jun 2019 09:26:31 -0500\r\nFrom: info@another.com\r\nTo: person@domain.com\r\nMessage-ID: \u003c5d0b979767c26_16f2c3fc04043f9c84968e@Domain-Person.local.mail\u003e\r\nSubject: TEST: 26_txt\r\nMime-Version: 1.0\r\nContent-Type: text/plain;\r\n charset=UTF-8\r\nContent-Transfer-Encoding: 7bit\r\n
X-SMTPAPI: {\"category\":[\"html_false\"]}\r\n
X-SMTPAPI: {\"filters\": {\"ganalytics\": {\"settings\": {\"enable\":1}}}}
\r\n\r\nHi there, but text\r\n"}

Я знаю, что в почтовом ящике Google вы можете нажать «Показать оригинал» для получения электронного письма и просмотреть информацию в заголовке и т. Д. Я отправил это им, но у них не было того, что им нужно.

  def b2c_tester(html=false, content)
        e_domain = 'careinhomes.com'
        @mailer_path = "app/views/b2c/b2c_send_grid_mailer"
        @from = "info@careinhomes.com"
        @recipients = ['gina@pipelinesuccess.com']
        @subject = html ? "#{DateTime.now.minute.to_s}_html" : 
              "#{DateTime.now.minute.to_s}_txt"

        header_category = {"category": ["html_#{html}"]}
        headers['X-SMTPAPI'] = header_category.to_json

        if html
          msg = tester_mail_with_opts({domain: e_domain}, content)
        else
          msg = tester_mail_plain_text_with_opts(
              "b2c_tester",{domain: e_domain})
        end
        msg
    end

   #content ex: 'text/plain', 'text/html', 'multipart/alternative', etc
    def tester_mail_with_opts(delivery_options={}, content=nil)
      mail_opts = set_mail_opts(delivery_options)
      unless content.nil?
        mail_opts[:content_type] = content
      end
      mail mail_opts
    end

  def set_mail_opts(delivery_options={})
      @subject = "TEST: #{@subject}" unless Rails.env.production?
      # Required
      mail_opts = {
          to: @recipients,
          from: @from,
          subject: @subject,
      }

      mail_opts[:template_path] = @template_path if @template_path
      mail_opts[:content_type] = @content_type if @content_type

      # Do delivery options
      mail_opts[:delivery_method_options] = DELIVERY_OPTIONS
      mail_opts[:delivery_method_options] = 
        mail_opts[:delivery_method_options].merge(delivery_options) 
              unless delivery_options.blank?
      mail_opts
    end

1 Ответ

0 голосов
/ 24 июня 2019

В базовой модели ActionMailer есть метод под названием delivery_mail, который извлекает полезную нагрузку, и вы можете захватить ее таким образом. Похоже, что для моей проблемы полезной нагрузкой является пустой хеш.

Вот как должен выглядеть полезный груз из ActionMailer:

{"mailer":"B2c::B2cSendGridMailer","message_id":"5d10dacb26dc2_17fb93ff52483b9c8952bf@Domain-Person.local.mail","subject":"TEST: 14_txt","to":["person@domain.com"],"from":["info@another.com"],"date":"2019-06-24T09:14:35.000-05:00","mail":"Date: Mon, 24 Jun 2019 09:14:35 -0500\r\nFrom: info@another.com\r\nTo: person@domain.com\r\nMessage-ID: \u003c5d10dacb26dc2_17fb93ff52483b9c8952bf@Domain-Person.local.mail\u003e\r\nSubject: TEST: 14_txt\r\nMime-Version: 1.0\r\nContent-Type: text/plain;\r\n charset=UTF-8\r\nContent-Transfer-Encoding: 7bit\r\nX-SMTPAPI: {\"category\":[\"html_false\"]}\r\nX-SMTPAPI: {\"filters\": {\"ganalytics\": {\"settings\": {\"enable\":1}}}}\r\n\r\nHi there, but text\r\n"}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...