【发布时间】:2015-05-14 08:48:24
【问题描述】:
根据文档,我们应该查看一个名为“message”的参数,它没有进来。进来的是一个名为“mandrill_events”的参数。
require 'mail'
class InboxController < ApplicationController
skip_before_filter :verify_authenticity_token, only: :create
def create
mail = Mail.new(params[:message])
....
没有骰子,但是当我使用以下语法时,我确实在控制台日志中看到了这一点(注意,JSON 太多以至于无法通过格式查看它):
puts JSON.parse(params[:mandrill_events])
{"mandrill_events"=>"[{\"event\":\"inbound\",\"ts\":1426188360,\"msg\":{\"raw_msg\":\"Received: from mail-ob0-f181.google.com (unknown [209.85.214.181])\\n\\tby ip-10-39-136-77 (Postfix) with ESMTPS id 25B0E2C0509\\n\\tfor <test@inbound.diabetesdelivery.com>; Thu, 12 Mar 2015 19:26:00 +0000 (UTC)\\nReceived: by obcvb8 with SMTP id vb8so16123307obc.10\\n for <test@inbound.diabetesdelivery.com>; Thu, 12 Mar 2015 12:25:59 -0700 (PDT)\\nDKIM-Signature: v=1; a=rsa-sha256; c=relaxed\\/relaxed;\\n d=gmail.com; s=20120113;\\n h=mime-version:date:message-id:subject:from:to:content-type;\\n bh=jyd6a9aMNBrnuDpbsOEokXnACKw\\/lLnh72zkG7LCs3c=;\\n b=wzt6xiplBtL6dq7uGR8RV6tRR9Lcsmj5zmIktZ7KXFcxbwezN+uEhK\\/XFw6ZjIfhp6\\n LVoEH5ljLjOwK4X4nrtHaPoNzHZizwQUzxk0qXGabTXHW6tqOLZUs3FeDwtt2ekeLvlb\\n bDuU4VcBnNZ5VkXDpA5hQeysCfGECBilAtMy\\/EBjdOngcgk4Fsp8u11\\/eeB2xqBPUcrR\\n JYeu\\/99XossdoeJW3avfxFDBw7ngc98oRS2ZPpyL7MY36XoCZCM25U9ue9kBcJ82n92i\\n ctbNdl+9ikVPdcmUokI0WIvBIBGl5yAcrvOQffxmaTz0c31fkq8+iyprDMP\\/GexVfQzN\\n SAKA==\\nMIME-Version: 1.0\\nX-Received: by 10.202.89.135 with SMTP id n129mr34093639oib.60.1426188359432;\\n Thu, 12 Mar 2015 12:25:59 -0700 (PDT)\\nReceived: by 10.60.119.68 with HTTP; Thu, 12 Mar 2015 12:25:59 -0700 (PDT)\\nDate: Thu, 12 Mar 2015 12:25:59 -0700\\nMessage-ID: <CAMf1_47jvgW6QMwDx8R9JU6C5YiUMaPjvFz3muxhM5v4HJyoSg@mail.gmail.com>\\nSubject: Subject FTW?\\nFrom: Dee diabetic <Deediabetic@gmail.com>\\nTo: test@inbound.diabetesdelivery.com\\nContent-Type: multipart\\/alternative; boundary=001a113d39288bfe8505111c5a88\\n\\n--001a113d39288bfe8505111c5a88\\nContent-Type: text\\/plain; charset=UTF-8\\n\\nBody here\\n\\n--001a113d39288bfe8505111c5a88\\nContent-Type: text\\/html; charset=UTF-8\\n\\n<div dir=\\\"ltr\\\">Body here<\\/div>\\n\\n--001a113d39288bfe8505111c5a88--\",\"headers\":{\"Received\":[\"from mail-ob0-f181.google.com (unknown [209.85.214.181]) by ip-10-39-136-77 (Postfix) with ESMTPS id 25B0E2C0509 for <test@inbound.diabetesdelivery.com>; Thu, 12 Mar 2015 19:26:00 +0000 (UTC)\",\"by obcvb8 with SMTP id vb8so16123307obc.10 for <test@inbound.diabetesdelivery.com>; Thu, 12 Mar 2015 12:25:59 -0700 (PDT)\",\"by 10.60.119.68 with HTTP; Thu, 12 Mar 2015 12:25:59 -0700 (PDT)\"],\"Dkim-Signature\":\"v=1; a=rsa-sha256; c=relaxed\\/relaxed; d=gmail.com; s=20120113; h=mime-version:date:message-id:subject:from:to:content-type; bh=jyd6a9aMNBrnuDpbsOEokXnACKw\\/lLnh72zkG7LCs3c=; b=wzt6xiplBtL6dq7uGR8RV6tRR9Lcsmj5zmIktZ7KXFcxbwezN+uEhK\\/XFw6ZjIfhp6 LVoEH5ljLjOwK4X4nrtHaPoNzHZizwQUzxk0qXGabTXHW6tqOLZUs3FeDwtt2ekeLvlb bDuU4VcBnNZ5VkXDpA5hQeysCfGECBilAtMy\\/EBjdOngcgk4Fsp8u11\\/eeB2xqBPUcrR JYeu\\/99XossdoeJW3avfxFDBw7ngc98oRS2ZPpyL7MY36XoCZCM25U9ue9kBcJ82n92i ctbNdl+9ikVPdcmUokI0WIvBIBGl5yAcrvOQffxmaTz0c31fkq8+iyprDMP\\/GexVfQzN SAKA==\",\"Mime-Version\":\"1.0\",\"X-Received\":\"by 10.202.89.135 with SMTP id n129mr34093639oib.60.1426188359432; Thu, 12 Mar 2015 12:25:59 -0700 (PDT)\",\"Date\":\"Thu, 12 Mar 2015 12:25:59 -0700\",\"Message-Id\":\"<CAMf1_47jvgW6QMwDx8R9JU6C5YiUMaPjvFz3muxhM5v4HJyoSg@mail.gmail.com>\",\"Subject\":\"Subject FTW?\",\"From\":\"Dee diabetic <Deediabetic@gmail.com>\",\"To\":\"test@inbound.diabetesdelivery.com\",\"Content-Type\":\"multipart\\/alternative; boundary=001a113d39288bfe8505111c5a88\"},\"text\":\"Body here\\n\\n\",\"text_flowed\":false,\"html\":\"<div dir=\\\"ltr\\\">Body here<\\/div>\\n\\n\",\"from_email\":\"Deediabetic@gmail.com\",\"from_name\":\"Dee diabetic\",\"to\":[[\"test@inbound.diabetesdelivery.com\",null]],\"subject\":\"Subject FTW?\",\"spf\":{\"result\":\"pass\",\"detail\":\"sender SPF authorized\"},\"spam_report\":{\"score\":0.5,\"matched_rules\":[{\"name\":\"RCVD_IN_DNSWL_LOW\",\"score\":-0.7,\"description\":\"RBL: Sender listed at http:\\/\\/www.dnswl.org\\/, low\"},{\"name\":null,\"score\":0,\"description\":null},{\"name\":\"listed\",\"score\":0,\"description\":\"in list.dnswl.org]\"},{\"name\":\"FREEMAIL_FROM\",\"score\":0,\"description\":\"Sender email is commonly abused enduser mail provider\"},{\"name\":\"HTML_MESSAGE\",\"score\":0,\"description\":\"BODY: HTML included in message\"},{\"name\":\"DKIM_VALID_AU\",\"score\":-0.1,\"description\":\"Message has a valid DKIM or DK signature from author's\"},{\"name\":\"DKIM_SIGNED\",\"score\":0.1,\"description\":\"Message has a DKIM or DK signature, not necessarily valid\"},{\"name\":\"DKIM_VALID\",\"score\":-0.1,\"description\":\"Message has at least one valid DKIM or DK signature\"},{\"name\":\"RDNS_NONE\",\"score\":1.3,\"description\":\"Delivered to internal network by a host with no rDNS\"}]},\"dkim\":{\"signed\":true,\"valid\":true},\"email\":\"test@inbound.diabetesdelivery.com\",\"tags\":[],\"sender\":null,\"template\":null}}]"}
3 月 12 日 12:26:046666 app/web.1: {"event"=>"inbound", "ts"=>1426188360, "msg"=>{"raw_msg"=>"Received: from mail- ob0-f181.google.com(未知 [209.85.214.181])\n\tby ip-10-39-136-77(后缀),ESMTPS id 为 25B0E2C0509\n\tfor ;2015 年 3 月 12 日星期四 19:26:00 +0000 (UTC)\n接收:由 obcvb8 和 SMTP id vb8so16123307obc.10\n for ;2015 年 3 月 12 日星期四 12:25:59 -0700 (PDT)\nDKIM 签名:v=1;a=rsa-sha256; c=放松/放松;\nd=gmail.com;s=20120113;\nh=mime-version:date:message-id:subject:from:to:content-type;\n bh=jyd6a9aMNBrnuDpbsOEokXnACKw/lLnh72zkG7LCs3c=;\ NB = wzt6xiplBtL6dq7uGR8RV6tRR9Lcsmj5zmIktZ7KXFcxbwezN + uEhK / XFw6ZjIfhp6 \ n LVoEH5ljLjOwK4X4nrtHaPoNzHZizwQUzxk0qXGabTXHW6tqOLZUs3FeDwtt2ekeLvlb \ n bDuU4VcBnNZ5VkXDpA5hQeysCfGECBilAtMy / EBjdOngcgk4Fsp8u11 / eeB2xqBPUcrR \ n倢羽企业/ 99XossdoeJW3avfxFDBw7ngc98oRS2ZPpyL7MY36XoCZCM25U9ue9kBcJ82n92i \ n ctbNdl + 9ikVPdcmUokI0WIvBIBGl5yAcrvOQffxmaTz0c31fkq8 + iyprDMP / GexVfQzN \ n SAKA = =\nMIME-版本:1.0\nX-接收:由 10.202.89.135 使用 SMTP id n129mr34093639oib.60.1426188359432;\n 2015 年 3 月 12 日星期四 12:25:59 -0700 (PDT)\n接收:由 10.60.119.68 使用 HTTP; 2015 年 3 月 12 日星期四 12:25:59 -0700 (PDT)\n日期:2015 年 3 月 12 日星期四 12:25:59 -0700\n消息 ID:\n主题:主题 FTW?\n发件人:Dee diabetic \n收件人:测试@inbound.diabetesdelivery.com\n内容类型:多部分/替代;边界=001a113d39288bfe8505111c5a88\n\n--001a113d39288bfe8505111c5a88\n内容类型:文本/纯文本; charset=UTF-8\n\n正文在此\n\n--001a113d39288bfe8505111c5a88\nContent-Type: text/html; charset=UTF-8\n\n正文在这里\n\n--001a113d39288bfe8505111c5a88--", "headers"=>{"Received"=>["from mail-ob0-f181.google.com (未知 [209.85.214.181 ]) 由 ip-10-39-136-77(后缀)与 ESMTPS id 25B0E2C0509 用于; 2015 年 3 月 12 日星期四 19:26:00 +0000 (UTC)", "by obcvb8 与 SMTP id vb8so16123307obc.10 for ; 2015 年 3 月 12 日星期四 12:25:59 -0700 (PDT)”,“通过 10.60.119.68 使用 HTTP; 2015 年 3 月 12 日星期四 12:25:59 -0700 (PDT)"], "Dkim-Signature"=>"v=1;一个=rsa-sha256; c=放松/放松; d=gmail.com; s=20120113; h=mime-version:date:message-id:subject:from:to:content-type; bh=jyd6a9aMNBrnuDpbsOEokXnACKw/lLnh72zkG7LCs3c=; B = wzt6xiplBtL6dq7uGR8RV6tRR9Lcsmj5zmIktZ7KXFcxbwezN + uEhK / XFw6ZjIfhp6 LVoEH5ljLjOwK4X4nrtHaPoNzHZizwQUzxk0qXGabTXHW6tqOLZUs3FeDwtt2ekeLvlb bDuU4VcBnNZ5VkXDpA5hQeysCfGECBilAtMy / EBjdOngcgk4Fsp8u11 / eeB2xqBPUcrR倢羽企业/ 99XossdoeJW3avfxFDBw7ngc98oRS2ZPpyL7MY36XoCZCM25U9ue9kBcJ82n92i ctbNdl + 9ikVPdcmUokI0WIvBIBGl5yAcrvOQffxmaTz0c31fkq8 + iyprDMP / GexVfQzN SAKA == “ ”MIME的版本“=> ”1.0“, ”X-收到“=>” 由10.202。 89.135,SMTP id n129mr34093639oib.60.1426188359432; 2015 年 3 月 12 日星期四 12:25:59 -0700 (PDT)", "日期"=>"2015 年 3 月 12 日星期四 12:25:59 -0700", "Message-Id"=>"", "主题" =>“主题 FTW?”,“发件人”=>“Dee 糖尿病”,“收件人”=>“test@inbound.diabetesdelivery.com”,“Content-Type”=>“multipart/alternative;边界=001a113d39288bfe8505111c5a88"}, "text"=>"正文在这里\n\n", "text_flowed"=>false, "html"=>"正文在这里\n\n", "from_email"=>"Deediabetic@gmail .com", "from_name"=>"Dee 糖尿病", "to"=>[["test@inbound.diabetesdelivery.com", nil]], "subject"=>"Subject FTW?", "spf"= >{"result"=>"pass", "detail"=>"sender SPF authorized"}, "spam_report"=>{"score"=>0.5, "matched_rules"=>[{"name"=>"RCVD_IN_DNSWL_LOW ", "score"=>-0.7, "description"=>"RBL: 发件人在http://www.dnswl.org/, 低"}, {"name"=>nil, "score"=>0, "description"=>nil }, {"name"=>"listed", "score"=>0, "description"=>"in list.dnswl.org]"}, {"name"=>"FREEMAIL_FROM", "score"=> 0, "description"=>"发件人电子邮件通常被滥用最终用户邮件提供商"}, {"name"=>"HTML_MESSAGE", "score"=>0, "description"=>"BODY: HTML 包含在邮件中"} , {"name"=>"DKIM_VALID_AU", "score"=>-0.1, "description"=>"邮件具有来自作者的有效 DKIM 或 DK 签名"}, {"name"=>"DKIM_SIGNED", "score "=>0.1, "description"=>"消息有 DKIM 或 DK 签名,不需要ssarily valid"}, {"name"=>"DKIM_VALID", "score"=>-0.1, "description"=>"消息至少有一个有效的 DKIM 或 DK 签名"}, {"name"=>"RDNS_NONE ", "score"=>1.3, "description"=>"由没有 rDNS 的主机发送到内部网络"}]}, "dkim"=>{"signed"=>true, "valid"=>true} , "email"=>"test@inbound.diabetesdelivery.com", "tags"=>[], "sender"=>nil, "template"=>nil}}
所以我得到了一个 JSON 字符串,但是获取 TO、FROM 和 SUBJECT 的最佳方法究竟是什么?
更新:我刚刚尝试了以下方法:
tester = JSON.parse(params[:mandrill_events])
puts tester[:msg][:subject]
#and even this
puts tester["msg"]["subject"]
没有用。出现错误:**TypeError(没有将 String 隐式转换为 Integer):**
【问题讨论】:
标签: ruby