2015-05-28 16 views
5

Tôi đang gửi email đến danh sách liên hệ dựa trên mẫu sử dụng Mandrill. Tôi muốn theo dõi xem các địa chỉ liên hệ đã trả lời email của tôi chưa, và để làm như vậy, tôi muốn kiểm tra xem Message-Id email đã gửi của tôi có xuất hiện trong trường tiêu đề In-Reply-To của thư mới hay không.Đặt Message-Id bằng Mandrill cho các email hàng loạt

Vấn đề là tôi phải tạo ra và thiết lập Message-Id bằng tay từ giống phi phi chỉ mang lại cho tôi nội _id của họ. Tuy nhiên, vì tôi đang gửi email đến nhiều địa chỉ liên hệ cùng một lúc, tôi đặt preserve_recipients thành false. Nhưng sau đó tôi chỉ có thể đặt một Message-Id, do đó sẽ trở thành không độc đáo trên toàn cầu.

Dưới đây là một ví dụ JSON rằng tôi đang gửi:

{ 
"from_email": "[email protected]", 
"from_name": "Its Me", 
"headers": {"Message-Id": ["<[email protected]>"]}, 
"subject": "Thesubject", 
"text": "Thebody", 
"to": [ 
    { 
     "email": "[email protected]", 
     "name": "John", 
     "type": "to" 
    }, 
    { 
     "email": "[email protected]", 
     "name": "Patrick", 
     "type": "to" 
    } 
], 
"preserve_recipients": false 

}

Trong trường hợp này, hai thông điệp sẽ được gửi đi, nhưng họ sẽ có cùng Message-Id. Nếu tôi không đặt nó, Mandrill sẽ tự động gán một, nhưng sau đó tôi không thể lấy nó.

Bất kỳ ý tưởng nào tôi có thể làm? Có thể toàn bộ cách tiếp cận của tôi không chính xác ...

Trả lời

3

tôi đã kết thúc vòng lặp qua tất cả những người nhận và tạo ra một mới Message-Id tại mỗi lần lặp và gửi một email cùng một lúc. Có lẽ không tối ưu vì tôi không sử dụng khả năng số lượng lớn Mandrill, nhưng ít nhất giờ đây tôi có thể lưu trữ id email.

import email 
import mandrill 

mandrill_client = mandrill.Mandrill('YOUR_MANDRILL_KEY') 

for recipient in recipients: 
    # Generate RFC 2822-compliant Message-ID header 
    message_id = email.Utils.make_msgid() 
    m = { 
     "headers": {"Message-Id": [message_id], 
     "from_email": "[email protected]", 
     "from_name": "Its Me", 
     "subject": "The subject", 
     "text": "The body", 
     "to": [{"email": recipient["email"], 
       "name": recipient["name"], 
       "type": "to"}], 
     "track_clicks": True, 
     "track_opens": True 
    } 
    result = mandrill_client.messages.send(message=m) 
+0

Bạn có thể đăng hàm 'make_msgid()' hoặc cung cấp một chút chi tiết về cách bạn tạo ID thư không? Tôi không thể tìm thấy định dạng của nó trong Tài liệu –

+1

Chắc chắn. Nó được tạo ra bằng cách sử dụng thư viện 'email' được xây dựng sẵn của Python và cụ thể hơn là [' utils.make_msgid() '] (http://doc.hc2.ch/python-2.7.9-docs-html/library/email. Hàm util.html # email.utils.make_msgid), tạo ra tiêu đề ID-ID tương thích [RFC 2822] (http://tools.ietf.org/html/rfc2822.html). – Victor

+0

Làm cho tinh thần. Cảm ơn bạn. –

0

Từ mandrill documentation bạn có thể truy xuất _id từ giá trị trả về của thư.

doc

+0

Tôi biết, nhưng thông tin này chỉ là nội bộ của Mandrill và sẽ bị mất khi tôi nhận được thư trả lời của email. – Victor

+0

Sau đó sử dụng webhooks, tôi sử dụng chúng cho hệ thống gửi thư của tôi và chúng hoạt động tuyệt vời –

+0

Có vẻ như là một câu trả lời hữu ích từ sự hỗ trợ của Mandrill: http://stackoverflow.com/a/29010839/4940233 –

Các vấn đề liên quan