Мандрил: Как прикрепить файл приглашения ics к шаблону?

Привет,

Интересно, поддерживает ли Mandrill возможность отправлять почту с приложенным файлом ics.

Допустим, у меня есть шаблон.

function sendMailMandrillInvite($name, $contact_email, $textarea, $url, $template_name = 'invite-businesses'){
    $merge = 'true';
    $message = array('dest_mail' => $contact_email, 'merge' => $merge);

    $message['to'] = array(array('email' => $contact_email));

    $mergeVars[] = array(
         'rcpt' => $contact_email,
                     'vars' => array(
                      array('name' => 'contact_name', 'content' => $name),
                      array('name' => 'message', 'content' => $textarea),
                      array('name' => 'url', 'content' => $url)
                    )
                  );

         $template_content = array(array('name' => 'example name', 'content' => 'example content')); // dummy usage
         $message['merge_vars'] = $mergeVars;

        return $this->messages_send_template($template_name, $template_content, $message);
    }

Как создать шаблон (HTML) и прикрепить файл ics, чтобы почтовая почта была "приглашением"?

Является ли это возможным?

Спасибо,

2 ответа

Решение

В настоящее время мы не можем поддерживать многочастный текстовый или календарный формат, который обычно используется для добавления приглашений на мероприятия в электронные письма. Когда синтаксический анализатор Mandrill встречает эти виды частей сообщения (текст / календарь), он пропускает их, поскольку они не соответствуют ничему, что он знает, как абстрагироваться. Это не настоящий текст или HTML, вложение или встроенное изображение. В будущем мы рассмотрим возможность добавления специальной поддержки для этой конкретной формы сообщения, поскольку она довольно популярна, но я не могу предоставить конкретный ETA, когда это может произойти. Тем временем вы можете подумать о создании файлов.ics и их присоединении, так же, как вы это делаете с другими типами вложений через интеграцию с Mandrill API или SMTP.

Мандрил Крю


Так что я использовал этот способ:

шаблон

{
    "key": "xxxxxxxxxxxxxxxxxx",
   "template_name": "fess1",
    "template_content": [
        {
            "name": "example name",
            "content": "example content"
        }
    ],
    "message": {
        "merge": "true",        
        "to": [
            {
                "email": "snaggs@gmail.com",
                "name": "Snaggs",
                "type": "to"
            }
        ],
        "headers": {
            "Reply-To": "snaggs@gmail.com",
            "MIME-Version": 1.0                
        },        
        "merge": true,
        "merge_vars": [
            {
                "rcpt": "snaggs@gmail.com",
                "vars": [
                    {
                        "name": "FNAME",
                        "content": "Snaggis"
                    }
                ]
            }
        ],
        "attachments": [
            { 
                "type": "text/calendar",
                "name": "meeting.ics",
                "content": "QkVHSU46VkNBTEVOREFSDQpWRVJTSU9OOjIuMA0KUFJPRElEOi0vL01lZXRlci9tZWV0ZXIvL05PTlNHTUwgdjEuMC8vRU4NCkNBTFNDQUxFOkdSRUdPUklBTg0KTUVUSE9EOlJFUVVFU1QNCkJFR0lOOlZFVkVOVA0KRFRTVEFSVDoyMDE0MTAxOFQyMDMwMDBaDQpEVEVORDoyMDE0MTAxOFQyMTAwMDBaDQpVSUQ6MjAxNDEwMTVUMDAyODEzLTIyMzc4ODg2OEBtZWV0ZXIuY29tDQpEVFNUQU1QOjIwMTQxMDE0VDIxMjgxM1oNCk9SR0FOSVpFUjtDTj0ic25hZ2dzQGdtYWlsLmNvbSI7U0VOVC1CWT0iTUFJTFRPOnNvbWVhcHBAZ21haWwuY29tIjtMQU5HVUFHRT1zZTpNQUlMVE86c25hZ2dzQGdtYWlsLmNvbQ0KQVRURU5ERUU7Q1VUWVBFPUlORElWSURVQUw7Uk9MRT1SRVEtUEFSVElDSVBBTlQ7UEFSVFNUQVQ9TkVFRFMtQUNUSU9OO1JTVlA9VFJVRTtDTj1GZXNzeSBNO1gtTlVNLUdVRVNUUz0wOk1BSUxUTzpzbmFnZ3MyQGdtYWlsLmNvbQ0KREVTQ1JJUFRJT046ZGRkZCBtYW5kcmlsbA0KTE9DQVRJT046ZGRkZGRkIG1hbmRyaWxsDQpTVU1NQVJZOkNhbiBJIGxheSBsb3c/IENvb2sgc29tZSB5YXkteW8gMg0KVFJBTlNQOk9QQVFVRQ0KU0VRVUVOQ0U6MA0KU1RBVFVTOkNPTkZJUk1FRA0KRU5EOlZFVkVOVA0KRU5EOlZDQUxFTkRBUg=="
            }
        ]
    }
}

куда content является:

BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//Meeter/meeter//NONSGML v1.0//EN
CALSCALE:GREGORIAN
METHOD:REQUEST
BEGIN:VEVENT
DTSTART:20141018T203000Z
DTEND:20141018T210000Z
UID:20141015T002813-223788868@meeter.com
DTSTAMP:20141014T212813Z
ORGANIZER;CN="snaggs@gmail.com";SENT-BY="MAILTO:someapp@gmail.com";LANGUAGE=se:MAILTO:snaggs@gmail.com
ATTENDEE;CUTYPE=INDIVIDUAL;ROLE=REQ-PARTICIPANT;PARTSTAT=NEEDS-ACTION;RSVP=TRUE;CN=Fessy M;X-NUM-GUESTS=0:MAILTO:snaggs2@gmail.com
DESCRIPTION:dddd mandrill
LOCATION:dddddd mandrill
SUMMARY:Can I lay low? Cook some yay-yo 2
TRANSP:OPAQUE
SEQUENCE:0
STATUS:CONFIRMED
END:VEVENT
END:VCALENDAR"

content base64_encode ():

QkVHSU46VkNBTEVOREFSDQpWRVJTSU9OOjIuMA0KUFJPRElEOi0vL01lZXRlci9tZWV0ZXIvL05PTlNHTUwgdjEuMC8vRU4NCkNBTFNDQUxFOkdSRUdPUklBTg0KTUVUSE9EOlJFUVVFU1QNCkJFR0lOOlZFVkVOVA0KRFRTVEFSVDoyMDE0MTAxOFQyMDMwMDBaDQpEVEVORDoyMDE0MTAxOFQyMTAwMDBaDQpVSUQ6MjAxNDEwMTVUMDAyODEzLTIyMzc4ODg2OEBtZWV0ZXIuY29tDQpEVFNUQU1QOjIwMTQxMDE0VDIxMjgxM1oNCk9SR0FOSVpFUjtDTj0ic25hZ2dzQGdtYWlsLmNvbSI7U0VOVC1CWT0iTUFJTFRPOnNvbWVhcHBAZ21haWwuY29tIjtMQU5HVUFHRT1zZTpNQUlMVE86c25hZ2dzQGdtYWlsLmNvbQ0KQVRURU5ERUU7Q1VUWVBFPUlORElWSURVQUw7Uk9MRT1SRVEtUEFSVElDSVBBTlQ7UEFSVFNUQVQ9TkVFRFMtQUNUSU9OO1JTVlA9VFJVRTtDTj1GZXNzeSBNO1gtTlVNLUdVRVNUUz0wOk1BSUxUTzpzbmFnZ3MyQGdtYWlsLmNvbQ0KREVTQ1JJUFRJT046ZGRkZCBtYW5kcmlsbA0KTE9DQVRJT046ZGRkZGRkIG1hbmRyaWxsDQpTVU1NQVJZOkNhbiBJIGxheSBsb3c/IENvb2sgc29tZSB5YXkteW8gMg0KVFJBTlNQOk9QQVFVRQ0KU0VRVUVOQ0U6MA0KU1RBVFVTOkNPTkZJUk1FRA0KRU5EOlZFVkVOVA0KRU5EOlZDQUxFTkRBUg==

Вы должны использовать https://icalendar.readthedocs.io/en/latest/index.html для создания простого файла ics, преобразовать его в base64 с помощью https://docs.python.org/2/library/base64.html и отправить в виде вложения

[
  {
    'type': "text/calendar",
    'content': b64encode(
            make_isc_calendar(start, end, location, event)),
    'name': "calendar.ics",
  }
]
Другие вопросы по тегам