Разбор Sendgrid не работает, JSON всегда пуст - PullRequest
0 голосов
/ 14 февраля 2019

Я пытаюсь проанализировать отправку электронной почты в домен и затем сбросить ее в базу данных с помощью входящего разбора sendgrid.Для этого я ссылаюсь на https://sendgrid.com/docs/for-developers/parsing-email/setting-up-the-inbound-parse-webhook/link.

Что я сделал до сих пор:

1) создать запись mx в домене:

email.domainname.com.   14400   IN  MX  Priority: 10
                                        Destination: mx.sendgrid.net

2) Sendgrid: Setting-> Входящий анализ -> Добавить хост и URL.Сначала попросите подтвердить домен.Итак, я сделал как он просит

//subdomain - domain
email domainname.com
//checked default whitelabel and automated security is on

Затем успешно проверил домен.3) Наконец, добавьте адрес хоста и адресата

//subdomain - domain
empty domainname.com
//destination url
http://www.domainname.com/jin/parse.json
//checked both options (check for spam and post raw data)

Теперь, когда я отправляю электронное письмо на info@domainname.com, он не записывает никаких данных в файл parse.json.Я в правильном направлении?До этого момента я предполагал, что данные будут записаны в этот файл parse.json.Или мне нужно написать дополнительный код в php где-нибудь, чтобы поймать это?Пожалуйста, дайте мне знать, что мне не хватает.Любая полезная ссылка или любое направление, чтобы заставить это работать.

Обновление:

Похоже, я начинаю получать данные почты в желаемое место назначения, но не понимаю, как разобрать эту часть электронной почты:


"email":"Received: by mx0129p1mdw1.sendgrid.net with SMTP id eHtBZW56Gk Sat, 16 Feb 2019 06:33:24 +0000 (UTC)\nReceived: from mail-ed1-f48.google.com (mail-ed1-f48.google.com [209.85.208.48]) by mx0129p1mdw1.sendgrid.net (Postfix) with ESMTPS id 9791F8664E2 for <email@domain.com>; Sat, 16 Feb 2019 06:33:24 +0000 (UTC)\nReceived: by mail-ed1-f48.google.com with SMTP id h58so9639427edb.5 for <email@domain.com>; Fri, 15 Feb 2019 22:33:24 -0800 (PST)\nDKIM-Signature: v=1; a=rsa-sha256; c=relaxed\/relaxed; d=gmail.com; s=20161025; h=mime-version:from:date:message-id:subject:to; bh=u7geNXNTSgSScusvNgz8ieJB7\/U4yjCfRB1gcO3nu4w=; b=XBkSHrHfxFUxG2oLm1btnV1ReETBlzSB5+qsRsEDRXjyCnG37jKWyguEnzvfy4BFqr pBpINHNBItlxBsrOb2YMEWfFo9pXGpUJIGUsGG6NbXiNARItV96EpmFL34e51myWm39O DyOX0Dsk9sYJxwXthELcm9ey91rZvOHUpb\/hi74Fo7O\/IPZiSvBnlpT+ekBqy3wPguuq 7GipFYWQpym\/4YPsFeJjDHI0LfwJHrKTz7gQxi93e7saRPS4bpJmoG73CrpHuckZDIYc hZcQy2i\/ZJRP7RB\/iwgVWN8lKr66vY8od6YuN1LgXzRKCKEva6+KRDmnefZeXoXuq0Q3 fcaQ==\nX-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed\/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:from:date:message-id:subject:to; bh=u7geNXNTSgSScusvNgz8ieJB7\/U4yjCfRB1gcO3nu4w=; b=H1rtTSirT9cm5PUZbn+dTbvkzA7bTighuUk6TMB3YAJEzRmU0UdopwaadGeEDnYfFM eJEt4HQ2R0RFwsqIbuV4wH2mKI2+tgjnVt4IxabyjGZFqO+F\/AG0LO8jKENQ6YfUhFdU j2JtlAR0C8eviUslAJsd6qcQh7U0VL3ZHDgCjiwDywAn56iinIEcAXEmwvp0Eae4EPET 1chJgpa2mZvmr4XQLGOPzcQkiF8sU3V3GtDQ34iT8HXx0eW1fg4VknSJV6X7uCqD9v33 VWDUyKGkRhbPZFwOmcEN9x0y94i2C8i+AZySQpTWdFHk46GxChpTjo9v7ndvpC4bi+Iy lteg==\nX-Gm-Message-State: AHQUAubsqSNqLHwm0GRRSzhRktzsmb5g2r3Ych6v15dNuFGIX7KkqvjN 5MDlXdyoY119vrCRn95FmmT6mVHp+ZJCV9R1rHotvA==\nX-Google-Smtp-Source: AHgI3IY2AJhyYFw7IzYhufYBq6sv3ckH36J1fox71nzUqqSmqmDOEUJrD6qUTWUSCOk9QxT3FyhGClTjzBmHWLNS21E=\nX-Received: by 2002:a50:98c5:: with SMTP id j63mr10306468edb.273.1550298803271; Fri, 15 Feb 2019 22:33:23 -0800 (PST)\nMIME-Version: 1.0\nFrom: Jon Doe <sender@gmail.com>\nDate: Sat, 16 Feb 2019 12:18:10 +0545\nMessage-ID: <CACX9xt=O4jQDJ8AWcUVxLti=gwFipaYV9NV7hpGQOkZx6FfYjQ@mail.gmail.com>\nSubject: Test Header\nTo: email@domain.com\nContent-Type: multipart\/alternative; boundary=\"00000000000076fcf90581fd11c8\"\n\n--00000000000076fcf90581fd11c8\nContent-Type: text\/plain; charset=\"UTF-8\"\n\nTest Message\n\n--00000000000076fcf90581fd11c8\nContent-Type: text\/html; charset=\"UTF-8\"\n\n<div dir=\"ltr\">Test Message<\/div>\n\n--00000000000076fcf90581fd11c8--\n",

Ответы [ 2 ]

0 голосов
/ 14 февраля 2019

Вы отправляете почту на domainname.com или gmail.com?Если вы отправляете на gmail.com, он отправляется на серверы GMail, а не на SendGrid.Пока вы отправляете на email@domainname.com, и есть запись MX на domainname.com, указывающая на sendgrid.net, и у вас есть активная конфигурация Parse, она должна приниматься SendGrid.

Другая половина уверена, что вы правильно настроили свой парсер.Вы упомянули поиск данных JSON;документация Sendgrid Parse специально гласит:

анализирует содержимое и вложения, затем отправляет multipart / form-data в URL, который вы выбираете

Doу вас есть настройка конечной точки для получения и анализа multipart/form-data со всеми полями, названными так, как определено в документации SendGrid, или иным образом настроены на прием все ?Sendgrid не отправляет вам данные JSON, поэтому, если вы ищете только JSON в теле POST, вы ничего не увидите.

0 голосов
/ 14 февраля 2019

Я недавно (в последние несколько месяцев) настроил наш собственный анализ входящего трафика. Важно отметить правильную настройку MX:

При настройке записи MX необходимо указать, какой доменНазовите ваш адрес электронной почты будет использовать.Если вы ожидаете получить электронное письмо от info@domainname.com, тогда ваша запись MX должна отображаться как domainname.com (не mail.domainname.com).

Примечание. Остальная часть вашей записи MX выглядит правильно.

Вы можете проверить, правильно ли работает сообщение, используя инструмент тестирования Web Api, который всегда оказывался полезным в прошлом: https://requestbin.fullcontact.com/.

Когда вы используете этот инструмент (этопредоставит вам свой уникальный URL для публикации), посмотрите, сможете ли вы передать основную строку в теле сообщения.Если инструмент показывает ваше сообщение вместе со строкой, которую вы пропустили, то вы знаете, что ваше сообщение работает.Это первый шаг, который я бы предпринял при диагностике ошибки в сообщении.Как только это сработает, и вы сможете увидеть все данные постов (включая заголовки, параметры и опубликованные данные), то выяснить, как заставить остальные работать, должно быть относительно просто.Дайте нам знать, как это происходит.

Редактировать (16.02.19): 2 Предлагаемые подходы к тому, как проверить, получает ли сообщение входящего анализа ваш Web API, и еслион может анализировать данные:

Первое предложение:

  1. Создайте страницу PHP для веб-API, которая будет получать сообщение о входящем анализе (например,myPhpPageToReceiveInboundParse.php.)

  2. Укажите URL-адрес своего веб-API для SendGrid для узла входящего анализа.Исходя из приведенного выше примера, ваш URL веб-API будет выглядеть следующим образом: https://yourDomain.com/myPhpPageToReceiveInboundParse.php.

  3. Примечание. Чтобы максимально упростить этот пример, не проверяйте входящий анализ SendGrid «Дополнительные параметры» (например,не устанавливайте флажок «Проверять входящие электронные письма на наличие спама» или «Размещать необработанное полное сообщение MIME»).

  4. Скопируйте / вставьте этот код для вновь созданной страницы веб-API:

    $url = 'http://requestbin.fullcontact.com/xxxxxxxx';
    $myvars = 'myvar1=' . $to . '&myvar2=' . $from. '&myvar3=' . $subject . '&myvar4=' . $body;
    
    $ch = curl_init( $url );
    curl_setopt( $ch, CURLOPT_POST, 1);
    curl_setopt( $ch, CURLOPT_POSTFIELDS, $myvars);
    
    $response = curl_exec( $ch );
    
  5. Примечание. В приведенном выше коде вам нужно будет заменить собственный уникальный идентификатор (в «xxxxxxxx») на URL-адрес вашей строки запроса для этой строки: $ url = 'http://requestbin.fullcontact.com/xxxxxxxx'; (например, http://requestbin.fullcontact.com/123a4b56, при условии, что вашим уникальным идентификатором является "123a4b56).

  6. Отправьте себе электронное письмо. Не забудьте отправить его с помощью" Получающего домена ", который вывыбирается при настройке вашего входящего анализа в SendGrid. (например, test@yourDomain.com).

  7. Проверьте ваши сообщения в запросе (например, http://requestbin.fullcontact.com/123a4b56?inspect)

Результат: Вы должны увидеть поля $ myvars в параметрах FORM / POST в requestbin.

Если вы выбралиЭто означает, что вы знаете, что сообщение Parse Parse от SendGrid принимается вашей страницей Web API и что вы можете анализировать данные, поступающие из SendGrid.

Второе предложение: Просмотррекомендуемый код PHP в документации SendGrid: https://sendgrid.com/docs/for-developers/tracking-events/php-code-example/. Это поможет вам при написании кода для вашей страницы веб-API.

====== КОНЕЦ РЕДАКТИРОВАНИЯ (2/16/ 19)

Посмотрите, устраняет ли это проблему, а если нет, предоставьте дополнительную информацию о настройке веб-API.В противном случае вы должны начать видеть данные, полученные.Удачи.

...