Mandrill-附件不发送附件
我正试图通过Mandrill发送一个小型rtf附件。我创建了以下json,并使用API测试页面进行了尝试。附件是base 64编码的。API没有报告任何错误,并且电子邮件已通过,但没有附件。我做错了什么Mandrill-附件不发送附件,mandrill,Mandrill,我正试图通过Mandrill发送一个小型rtf附件。我创建了以下json,并使用API测试页面进行了尝试。附件是base 64编码的。API没有报告任何错误,并且电子邮件已通过,但没有附件。我做错了什么 { "attachments": [ { "type": "application/rtf", "name": "test.rtf", "content": "e1xydGYxXGFuc2lcYW5zaWNwZzEyNTJcZGVm
{
"attachments": [
{
"type": "application/rtf",
"name": "test.rtf",
"content": "e1xydGYxXGFuc2lcYW5zaWNwZzEyNTJcZGVmZjBcZGVmbGFuZzIwNTd7XGZvbnR0Ymx7XGYwXGZuaWxcZmNoYXJzZXQwIENhbGlicmk7fX0NCntcKlxnZW5lcmF0b3IgTXNmdGVkaXQgNS40MS4yMS4yNTEwO31cdmlld2tpbmQ0XHVjMVxwYXJkXHNhMjAwXHNsMjc2XHNsbXVsdDFcbGFuZzlcZjBcZnMyMiB0aGlzIGlzIGEgdGVzdCBzZW5kaW5nIGZpbGVccGFyDQp9DQoA"
}
],
"message": {
"html": "<html>\r\n<body>test data</body>\r\n</html>\r\n",
"subject": "Cloud Demo",
"from_email": "jklovanc@hotmail.com",
"preserve_recipients": true,
"text": "",
"to": [
{
"type": "to",
"name": "",
"email": "jklovanc@hotmail.com"
}
],
"from_name": "",
"headers": {
"reply-to": "jklovanc@hotmail.com"
}
},
"key": #mykey#,
"async": false
{
“附件”:[
{
“类型”:“应用程序/rtf”,
“名称”:“test.rtf”,
“内容”:“E1XYDGYXGFUC2LCYW5ZAWWWWWWZGEYNTJCZGVZGWZIWNTD7XGZVBNR0YMX7GYWXGZUWZMNOYXZZZZQWIENHBGLICMK7FX0NCNTCKLXNZW5LCMF0B3IGTXNMDGVKAQGNS40MS4YMS4YNTEWO31CDMLLD2TPMQ0xHVWYWYKJKHNHMJAWKHNSMJC2XHNSXHNSXHNSBVSDDFCB7FXFZFZFZFZYLCZYDCB5YDGL9A”
}
],
“信息”:{
“html”:“\r\n测试数据\r\n\r\n”,
“主题”:“云演示”,
“从您的电子邮件”:jklovanc@hotmail.com",
“保存收件人”:正确,
“文本”:“,
“致”:[
{
“类型”:“至”,
“名称”:“,
“电子邮件”:jklovanc@hotmail.com"
}
],
“发件人姓名”:“,
“标题”:{
“答复”:jklovanc@hotmail.com"
}
},
“钥匙”:“我的钥匙”,
“异步”:false
}附件是邮件对象的一部分,因此附件参数应嵌套在邮件下,而不是在同一级别。它应该是这样的:
{
"message": {
"attachments": [
{
"type": "application/rtf",
"name": "test.rtf",
"content": "e1xydGYxXGFuc2lcYW5zaWNwZzEyNTJcZGVmZjBcZGVmbGFuZzIwNTd7XGZvbnR0Ymx7XGYwXGZuaWxcZmNoYXJzZXQwIENhbGlicmk7fX0NCntcKlxnZW5lcmF0b3IgTXNmdGVkaXQgNS40MS4yMS4yNTEwO31cdmlld2tpbmQ0XHVjMVxwYXJkXHNhMjAwXHNsMjc2XHNsbXVsdDFcbGFuZzlcZjBcZnMyMiB0aGlzIGlzIGEgdGVzdCBzZW5kaW5nIGZpbGVccGFyDQp9DQoA"
}
],
"html": "<html>\r\n<body>test data</body>\r\n</html>\r\n",
....
{
“信息”:{
“附件”:[
{
“类型”:“应用程序/rtf”,
“名称”:“test.rtf”,
“内容”:“E1XYDGYXGFUC2LCYW5ZAWWWWWWZGEYNTJCZGVZGWZIWNTD7XGZVBNR0YMX7GYWXGZUWZMNOYXZZZZQWIENHBGLICMK7FX0NCNTCKLXNZW5LCMF0B3IGTXNMDGVKAQGNS40MS4YMS4YNTEWO31CDMLLD2TPMQ0xHVWYWYKJKHNHMJAWKHNSMJC2XHNSXHNSXHNSBVSDDFCB7FXFZFZFZFZYLCZYDCB5YDGL9A”
}
],
“html”:“\r\n测试数据\r\n\r\n”,
....
谢谢,你是对的。如果Mandrill发回并出错,而不仅仅是忽略它,那就太好了。我们当然可以查看更多的验证,但它通常不是一个错误,而是一个未知的参数,我们将忽略它。对于我们实际支持的参数,我们将在不异步的情况下至少进行最小的验证调用。很抱歉,但在json中将参数放在错误的位置是一个错误,因为它不会产生预期的效果。对我来说,每次系统执行异常操作(如忽略参数)时,都应该报告。如果您指出解决方案不同的位置,可能会很有用。请注意,该问题与PHP无关,所以我不认为这是一种解决方案技术。
<?php
//It works for me! good luck
/*LIBS*/
include 'lib/mandrill-api-php/src/Mandrill.php';
$mandrill = new Mandrill('YOUR API KEY HERE');
/*ADMIN AND USER EMAIL*/
$admin_email = 'your_email@your_domain.com';
$client_email = 'the_email_of_the_client@mail.com';
/*attach PDF with base64_encode */
$attachment = file_get_contents('the_route_to_your_pdf'); // https://yourdomain/pdf_folder/mypdf.pdf
$attachment_encoded = base64_encode($attachment);
try{
$user_message = array(
'subject' => 'Your subject',
'from_email' => $admin_email,
'from_name' => 'my_domain_for_example',
'html' => '<p>HTML template</p>',
'to' => array(array('email' => $client_email, 'name' => 'Recipient 1')),
'merge_vars' => array(array(
'rcpt' => 'recipient1@domain.com',
'vars' =>
array(
array(
'name' => 'FIRSTNAME',
'content' => 'Recipient 1 first name'),
array(
'name' => 'LASTNAME',
'content' => 'Last name')
))),
'attachments' => array(
array(
'content' => $attachment_encoded,
'type' => "application/pdf",
'name' => 'the_name_of_the_attach.pdf',
))
);
$res_user_mandrill = $mandrill->messages->send($user_message, $async=false, $ip_pool=null, $send_at=null);
} catch(Mandrill_Error $e) {
}
?>