2015-10-08 4 views
0

В документации не очень понятно, как использовать параметр send_at. Я отправляю расписание по электронной почте, используя следующую функцию. Я пробовал разные версии datetime, требуемые документацией API.Mandrill API, отправляющий рассылаемые электронные письма с send_at

Все мои письма отправляются сразу и не назначаются.

def send_member_email_batch(current_user, recipient_emails, recipient_names, subject, body, scheduled) 
    m = Mandrill::API.new ENV["MANDRILL_APIKEY"] 

    recipient_emails.each_with_index do |recipient, index| 
     to_address = (recipient_emails.length > 1) ? [{"email"=>recipient,"name"=>recipient_names[index], "type"=>"to"}] : 
      [{"email"=>recipient, 
       "name"=>recipient_names[index], 
       "type"=>"to"}, 
      {"email"=>current_user.email, 
       "name"=>current_user.name, 
       "type"=>"cc"}] 

     message = { 
     :from_name=> current_user.name, 
     :from_email=> current_user.email, 
     :to=> to_address, 
     :subject=> temp_subject, 
     :html=> temp_body, 
     :auto_text=>true, 
     :tags=> ["members"],  
     :track_opens=>true, 
     :track_clicks=>true,   
     :preserve_recipients => false 
     } 
     time_now = DateTime.now.utc 
     time_now += (1 + ((5-time_now.wday) % 7)) 
     time_now = time_now.change({hour: 12, min: 3, sec: 0 }).strftime('%F %T') 
     puts time_now #2015-10-10 12:03:00 

     send_at = time_now 

     #puts "to: #{recipient}, subject = #{temp_subject}, message = #{temp_body}" 
     begin 
     result = m.messages.send message, send_at 
     puts result #email is not scheduled 
     rescue Mandrill::Error => e 
     puts "A mandrill error occurred: #{e.class} - #{e.message}" 
     next 
     end 
    end 
    end 

https://mandrillapp.com/api/docs/messages.ruby.html#method=send

ответ

0

Найден ответ, вы должны включить асинхронной и ip_pool, если вы хотите использовать регулярные электронные письма ..

async = false 
ip_pool = "Main Pool" 
send_at = "example send_at" 
result = mandrill.messages.send message, async, ip_pool, send_at 
+0

Эти параметры не должны использовать send_at. Скорее всего, вы видите ответ «в очереди», поскольку вы не отправляете его вместо async. – Kaitlin

+0

@ Kaitlin-Mandrill Интересно, что вы работаете в мандрилле и рассказываете мне об этом. Требуется, чтобы API работал. Я на самом деле ударился головой об этом часами, пока не понял. – echan00

+0

@ Кейтлин-Мандрилл Привет Кейтлин, не могли бы вы взглянуть на этот вопрос? http://stackoverflow.com/questions/33730115/mandrill-embed-image-cannot-get-interpreted-properly Большое спасибо! – Junlynn

0

из мандрил апи документ:

, когда это сообщение должно быть отправлено в формате UTC отметку времени в формате ГГГГ-ММ-ДД ЧЧ: ММ: СС. Если вы укажете время в прошлом, сообщение будет отправлено немедленно. Для платного письма взимается дополнительная плата, и эта функция доступна только для счетов с положительным балансом.

Если бы мне было нужно догадаться, что я думаю, что send_at = time_now должен стать send_at = time_now.to_s, чтобы send_at уважал необходимый формат.

Смежные вопросы