2014-10-31 6 views
2

Попытка получить форму для отправки электронной почты в Mandrill api. Моя электронная почта продолжает ставиться в очередь и не отправляется.Mandrill API Электронная почта с синатрой

post '/my-handling-form-page' do 

    m = Mandrill::API.new 
    message = { 
     :subject => "Hello from the Mandrill API", 
     :from_name => "#{params[:name]} #{params[:email]}", 
     :text => "Hi message how are you?", 
     :to => [ 
      { 
       :email => "[email protected]", 
       :name => "Recipient1" 
      } 
     ], 
     :html => "<html>#{params[:msg]}</html>", 
     :from_email => "[email protected]" 
    } 
    sending = m.messages.send message 
    puts sending 
    erb :index 
end 

Ошибка говорит: { "электронная почта" => "[email protected]", "статус" => "очередь", "_id" => "216c30f42ee849e2a70528e3d4f9774f", "reject_reason" => ноль}

Справка будет принята с благодарностью.

ответ

1

Из Mandrill документы:

Почему доставленное сообщение говорят, "в очереди"?

Mandrill автоматически отслеживает и записывает ответ SMTP, который мы получаем с почтовых серверов получателей для каждого отправляемого вами электронного письма. Некоторые успешно отправленные сообщения электронной почты будут включать в себя «очереди» в ответ SMTP , например 250 OK; поставлен в очередь как 12345. Письмо по-прежнему доставлялось до получателю, как ожидалось, но может потребоваться дополнительная обработка , прежде чем он приземлится в почтовый ящик получателя. Например, большинство раз Mandrill может отправлять электронную почту намного быстрее, чем серверы получателей могут принять или обработать его. Во многих случаях такие вещи, как время суток и , общий трафик электронной почты на этот сервер ISP или получателя может повлиять на то, как быстро получают и обрабатывают вашу электронную почту.

Ваш код кажется прекрасным. Выглядит, может быть, проблема с сервером получателя.

+0

спасибо, я думаю, это должно быть проблемой с Gmail. Может быть, плохо попробуйте с учетной записью aol или yahoo. –

+0

Извините, это неверно. «Статус», о котором говорится в приведенных здесь документах, отличается от значения «status», возвращаемого вызовом API. См. [Этот ответ от Mandrill для деталей] (http://stackoverflow.com/a/32209435/762028). – Molomby

1

мейлу ответ От Mandrill:

Спасибо за сообщение. В этом случае кажется, что вызов API, передаваемый в , Mandrill содержит несколько недопустимых параметров - однако, поскольку вы также передаете нам массив вложений в этом вызове API, вы не увидите ответ, указывающий на то, что он недействителен Вызов API.

Всякий раз, когда Mandrill получает вложение, мы всегда будем возвращать ответ «Очередь», так как наши системы установят это сообщение в сторону, чтобы отсканировать вложение для вирусов и вредоносного ПО, прежде чем мы его обработаем каким-либо другим способом. Это означает, что если что-то не так с вызовом API, вы не будете предупреждены, и он будет «молча» сбой.

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

**"subaccount"**: "customer-123", 

и

**"ip_pool"**: "Main Pool", 

оба вызывают этот API вызов на провал, так как вы указываете параметры, которые не существуют в вашей учетной записи. Я бы рекомендовал вам пройти через код API и удалить все, что вы не используете.Для справки, минимальный вызов API необходимо отправить по электронной почте будет выглядеть так: { "message": { "html": "<html content>", "subject": "<subject>", "from_email": "<sender email address>", "from_name": "<sender name>", "to": [ { "email": "<recipient email address>", "name": "<recipient name>", "type": "to" } ], "headers": { "Reply-To": "<reply-to address>" } }, "async": false, "ip_pool": null, "send_at": null, "key": "<valid API key>" }

Таким образом, после этого ценного ответа это то, что работа в Django для меня :)
def send_mail_msg(): import mandrill

try: 
    mandrill_client = mandrill.Mandrill('xxxxxxxxxxxxxxx') 
    message = { 
     # 'attachments': [{'content': 'ZXhhbXBsZSBmaWxl', 
     #       'name': 'myfile.txt', 
     #       'type': 'text/plain'}], 
       'auto_html': None, 
       'auto_text': None, 
       # 'bcc_address': '[email protected]', 
       'from_email': '[email protected]', 
       'from_name': 'Example Name', 
       'global_merge_vars': [{'content': 'merge1 content', 'name': 'merge1'}], 
       'google_analytics_campaign': '[email protected]', 
       'google_analytics_domains': ['example.com'], 
       # 'headers': {'Reply-To': '[email protected]'}, 
       'html': '<p>Example HTML content</p>', 
       'images': [{'content': 'ZXhhbXBsZSBmaWxl', 
          'name': 'IMAGECID', 
          'type': 'image/png'}], 
       'important': False, 
       'inline_css': None, 
       'merge': True, 
       'merge_language': 'mailchimp', 
       # 'merge_vars': [{'rcpt': '[email protected]', 
       #     'vars': [{'content': 'merge2 content', 'name': 'merge2'}]}], 
       'metadata': {'website': 'www.example.com'}, 
       'preserve_recipients': None, 
       'recipient_metadata': [{'rcpt': '[email protected]', 
             'values': {'user_id': 123456}}], 
       'return_path_domain': None, 
       'signing_domain': None, 
       # 'subaccount': 'customer-123', 
       'subject': 'example subject', 
       'tags': ['password-resets'], 
       'text': 'Example text content', 
       'to': [{'email': '[email protected]', 
         'name': 'Recipient Name', 
         'type': 'to'}], 
       'track_clicks': None, 
       'track_opens': None, 
       'tracking_domain': None, 
       'url_strip_qs': None, 
       'view_content_link': None} 
    result = mandrill_client.messages.send(message=message, async=False, ip_pool='Main Pool') 
    # send_at=str(datetime.datetime.now().time())) 

    ''' 
    [{'_id': 'abc123abc123abc123abc123abc123', 
     'email': '[email protected]', 
     'reject_reason': 'hard-bounce', 
     'status': 'sent'}] 
    ''' 
    return result 

except mandrill.Error as e: # Mandrill errors are thrown as exceptions 
    print 'A mandrill error occurred: %s - %s' % (e.__class__, e) 
    # A mandrill error occurred: <class 'mandrill.UnknownSubaccountError'> - No subaccount exists with the id 'customer-123' 
    raise` 
0

По к Mandrill API:

субсчет

the unique id of a subaccount for this message - must already exist or will fail with an error. 

(По крайней мере, для меня тестовое начало работы после удаления этого поля). Mandrill определенно должен улучшить свои ответы.

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