mailgun - отправить письмо с вложением

Я пытаюсь отправить почту в symfony с вложением с помощью mailgun

Я передал этот Вопрос. И этот Справочник. Но мне не помогло.

Это моя функция,

public function sendMail($to, $subject, $body, $attachment = null)
{
    $mgClient = new Mailgun($this->container->getParameter('mailgun_key'));
    $domain = $this->container->getParameter('mailgun_domain');
    $content = [
        'from' => $this->container->getParameter('mailgun_from'),
        'to' => 'tester <' . $to . '>',
        'subject' => $subject,
        'text' => $body
    ];
    if (!empty($attachment)) {
        $result = $mgClient->sendMessage("$domain", $content);
    } else {
        $result = $mgClient->sendMessage("$domain", $content, [
            'attachment[0]' => [$attachment]
        ]);
    }
    return $result;
}

Во вложении передаю путь к файлу. то есть /home/mypc/Downloads/test.txt

Но я получаю только пустую почту. Приложение не приходит.

Где я не прав? Пожалуйста помоги.


person Keyur    schedule 17.04.2017    source источник


Ответы (3)


документация по вложениям mailgun содержит следующую информацию:

Вложения

Вы можете прикрепить файл из памяти или по пути к файлу.

Из пути к файлу

$mg->messages()->send('example.com', [
  'from'    => '[email protected]', 
  'to'      => '[email protected]', 
  'subject' => 'Test file path attachments', 
  'text'    => 'Test',
  'attachment' => [
    ['filePath'=>'/tmp/foo.jpg', 'filename'=>'test.jpg']
  ]
]);

Из памяти

// Some how load the file to memory
$binaryFile = '[Binary data]';

$mg->messages()->send('example.com', [
  'from'    => '[email protected]', 
  'to'      => '[email protected]', 
  'subject' => 'Test memory attachments', 
  'text'    => 'Test',
  'attachment' => [
    ['fileContent'=>$binaryFile, 'filename'=>'test.jpg']
  ]
]);

Встроенные вложения

$mg->messages()->send('example.com', [
  'from'    => '[email protected]', 
  'to'      => '[email protected]', 
  'subject' => 'Test inline attachments', 
  'text'    => 'Test',
  'inline' => [
    ['filePath'=>'/tmp/foo.jpg', 'filename'=>'test.jpg']
  ]
]);
person Jared Forth    schedule 25.09.2019

Пожалуйста, замените приведенный ниже код

$result = $mgClient->sendMessage("$domain", $content, [
      'attachment[0]' => [$attachment]
]);

С участием

$result = $mgClient->sendMessage("$domain", $content, array(
      'attachment' => array($attachment)
));

Например

$result = $mgClient->sendMessage("$domain", $content, array(
    'attachment' => array('/home/mypc/Downloads/test.txt')
));

Ссылка: https://documentation.mailgun.com/user_manual.html#sending-через-api

person Gopal Joshi    schedule 17.04.2017
comment
Не работает. Пробовал уже. Есть ли проблема с присоединением MIME-TYPE? Я не знаю, как это сделать. - person Keyur; 17.04.2017

Пример ниже работает для меня.

Тест

$mgClient = new Mailgun('key-abcfdfa5b40b6ea0ec0ccf9c33a90y65');
$domain = "sandbox111df299cae04a3ea77733f374b73oi8.mailgun.org";

// SEND
$result = $mgClient->sendMessage(
    $domain,
    [
        'from'    => 'Sender <[email protected]>',
        'to'      => 'Receiver <[email protected]>',
        'subject' => 'Test subject',
        'text'    => 'Test message body',
    ],
    [
        'attachment' => [
            '/var/www/html/local/test_app/logo.jpg',
            '/var/www/html/local/test_app/ngrok.png'
        ]
    ]
);
// END

print_r($result);

stdClass Object
(
    [http_response_body] => stdClass Object
        (
            [id] => 
            [message] => Queued. Thank you.
        )

    [http_response_code] => 200
)

Вы можете посмотреть на https://github.com/tehplague/swiftmailer-mailgun-bundle также.

person BentCoder    schedule 18.04.2017