ruby-on-rails - 使用 Mailchimp 3.0 API 和 Gibbon [rails] 检查成员是否存在
问题描述
我正在使用 mailchimp API 3.0 检查电子邮件地址是否在邮件列表中。我正在使用 Gibbon gem,如果电子邮件在列表中,我的代码可以正常工作。
list_id = ENV['MAILCHIMP_LIST_ID']
@gibbon = Gibbon::Request.new(api_key: ENV['mailchimp_api_key'], symbolize_keys: true)
@member_id = Digest::MD5.hexdigest(params[:user_Email]
@member_info = @gibbon.lists(list_id).members(@member_id).retrieve.body[:status]
=> "subscribed"
但是,如果电子邮件不是我得到的列表的一部分
@member_id_2 = "emailnot@inlist.net"
@member_info = @gibbon.lists(list_id).members(@member_id_2).retrieve.body[:status]
Gibbon::MailChimpError: the server responded with status 404
@title="Resource Not Found", @detail="The requested resource could not
be found.", @body{:type=>"http://developer.mailchimp.com/documentation/mailchimp/guides/error-glossary/", :title=>"Resource Not Found", :status=>404, :detail=>"The requested resource could not be found.", :instance=>"XXXXXXX4a76-ae0e-35406fc75c3f"}, @raw_body="{\"type\":\"http://developer.mailchimp.com/documentation/mailchimp/guides/error-glossary/\",\"title\":\"Resource Not Found\",\"status\":404,\"detail\":\"The requested resource could not be found.\",\"instance\":\"XXXXXXXX07c9-4a76-ae0e-35406fc75c3f\"}", @status_code=404
如何让我的代码检查电子邮件是否存在?我可以写一个 if else 来寻找 404 响应吗?
if @member_info == "subscribed" (member is present)
@gibbon.lists(list_id).members(@member_id).update(body: {interests: {'interest_group': true}})
else
@gibbon.lists(list_id).members.create(body: { email_address: params[user_Email], status: 'subscribed', double_optin: false, interests: {'interest_group': true}})
end
404 错误导致我的应用程序崩溃并且它永远不会创建新订阅者
解决方案
我知道了!
我使用了开始/救援来救援该方法并完成这些步骤。
list_id = ENV['MAILCHIMP_LIST_ID']
gibbon = Gibbon::Request.new(api_key: ENV['mailchimp_api_key'], symbolize_keys: true)
member_id = Digest::MD5.hexdigest(params[:userEmail])
begin
member_info = gibbon.lists(list_id).members(member_id).retrieve.body[:status]
gibbon.lists(list_id).members(member_id).update(body: {interests: {'interest_id': true}})
rescue
gibbon.lists(list_id).members.create(body: { email_address: params[:userEmail], status: 'subscribed', double_optin: false, interests: {'interest_id': true}})
end
redirect_to root_path, :notice => "Congrats!
推荐阅读
- python - 如何将 Pandas 数据帧的所有行与另一个 Pandas 数据帧中的单行相乘?
- angular - 在以角度加载数据之前调用的函数
- angular - Angular:如何在解析器完成之前更改 URL?
- batch-file - 当以 SYSTEM 用户(批处理)运行脚本时,更改当前登录的 Windows 用户的注册表值
- python - 有没有办法限制在 PyGame 中调用函数的次数?
- java - 通过 Eclipse (2019-12) 安装 Glassfish Tools (1.0.1) 时遇到问题
- r - 操作包含 R 中列表的数据框的每一行
- python - Microsoft VBA Powerpoint IndentLevel 计数不正确
- python - python tempfile + gzip + json 转储
- python - 使用正则表达式读取数据