Estoy tratando de enviar un correo en Symfony con un archivo adjunto con la ayuda de mailgun
He referido esta pregunta . Y esta Referencia . Pero no me ayudó.
Esta es mi función,
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; } En el archivo adjunto, paso la ruta del archivo. es decir /home/mypc/Downloads/test.txt
Pero solo recibo correo en blanco. El archivo adjunto no viene.
¿Dónde estoy equivocado? Por favor ayuda.
La documentación de archivos adjuntos de pistola de correo tiene la siguiente información:
Puede adjuntar un archivo desde la memoria o mediante una ruta de archivo.
$mg->messages()->send('example.com', [ 'from' => 'bob@example.com', 'to' => 'sally@example.com', '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' => 'bob@example.com', 'to' => 'sally@example.com', 'subject' => 'Test memory attachments', 'text' => 'Test', 'attachment' => [ ['fileContent'=>$binaryFile, 'filename'=>'test.jpg'] ] ]); $mg->messages()->send('example.com', [ 'from' => 'bob@example.com', 'to' => 'sally@example.com', 'subject' => 'Test inline attachments', 'text' => 'Test', 'inline' => [ ['filePath'=>'/tmp/foo.jpg', 'filename'=>'test.jpg'] ] ]);Reemplace el código a continuación
$result = $mgClient->sendMessage("$domain", $content, [ 'attachment[0]' => [$attachment] ]);Con
$result = $mgClient->sendMessage("$domain", $content, array( 'attachment' => array($attachment) ));P.ej.
$result = $mgClient->sendMessage("$domain", $content, array( 'attachment' => array('/home/mypc/Downloads/test.txt') ));Referencia: https://documentation.mailgun.com/user_manual.html#sending-via-api
El siguiente ejemplo funciona para mí.
Prueba
$mgClient = new Mailgun('key-abcfdfa5b40b6ea0ec0ccf9c33a90y65'); $domain = "sandbox111df299cae04a3ea77733f374b73oi8.mailgun.org"; // SEND $result = $mgClient->sendMessage( $domain, [ 'from' => 'Sender <mailgun@sandbox111df299cae04a3ea77733f374b73oi8.mailgun.org>', 'to' => 'Receiver <bentcoder@sandbox111df299cae04a3ea77733f374b73oi8.mailgun.org>', '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 )También puede buscar en https://github.com/tehplague/swiftmailer-mailgun-bundle .