Mandrill - 没有带id的消息

时间:2014-05-27 02:17:49

标签: ruby mandrill

我在使用mandrill API处理ruby时遇到问题,我不确定是否缺少ruby / api理解我是否存在问题mandrill api。

我有这个方法发送一个带有mandrill的电子邮件,然后我使用从mandrill.messages.send返回的id再次拨打api来调用mandrill来获取电子邮件标题message-id所以我可以将其存储在db表中。

为什么我的ID明显存在时会收到错误Mandrill::UnknownMessageError (No message exists with the id '64fba1cce24942dea1ada4f905fd7871'):,如日志事件的评论中所示?

# Sends an email to all users for the account_id on the issue
def send_email

    require 'mandrill'  

    ...

    mandrill = Mandrill::API.new Mandrill::API_KEY

    # Email contents
    message = {  
        :subject => self.name,  
        :from_name => self.account.subdomain,  
        :text => self.description,  
        :to => [{
            :email => user.email,
            :name => user.name
        }],
        :text => self.description,  
        :from_email => "noreply@myapp.com",
        :headers => {
            'reply-to' => 'update@myapp.com'
        }
    }  

    results = mandrill.messages.send message # Send email through mandrill

    # Loop through results of sent email
    results.each do |result|

        logger.debug "result id = #{result['_id']}"  # LOGS result id = 64fba1cce24942dea1ada4f905fd7871
        logger.debug "result = #{result}"  # LOGS result = {"email"=>"tomcaflisch@gmail.com", "status"=>"sent", "_id"=>"64fba1cce24942dea1ada4f905fd7871", "reject_reason"=>nil}

        id = result['_id']  # Mandrill's internal id from api call results that sent the email

        # CAUSES Mandrill::UnknownMessageError (No message exists with the id '64fba1cce24942dea1ada4f905fd7871'):
        info = mandrill.messages.content id # Get info for sent email with a specific mandrill id

    end
end

2 个答案:

答案 0 :(得分:1)

我认为你只需要给它一点时间。

答案 1 :(得分:0)

我在messages.info(id)上面临同样的错误。

但是,搜索('*')会查找已发送但未提供正确状态信息的所有邮件。

我认为当调用messages.info(id)时,下面的gem代码片段会获得500状态(而不是200):

    def call(url, params={})
        params[:key] = @apikey
        params = JSON.generate(params)
        r = @session.post(:path => "#{@path}#{url}.json", :headers => {'Content-Type' => 'application/json'}, :body => params)

        cast_error(r.body) if r.status != 200
        return JSON.parse(r.body)
    end

此外,gem代码托管在bitbucket而不是更常见的github上。不知道如何在那里提出问题以获得支持。

抱歉没有多大帮助,但我认为我应该分享我的经验,以便更好地了解问题。