1

In the past, I've managed to use Mailgun to send ONE attachment. But I now have a client requirement to send more than one file through Mailgun as an attachment.

I am using the attachment[1] as an array and passing it through. The problem I have is, It's not sending the message and also not particularly providing me with any error messages or response messages.

I am using PHP and CURL to send the Email.

My PHP code is :

$curl_post_data = array
    (
        'from'    => $from,
        'to'      => $recipient,
        'subject' => $subject,
        'html'    => $message
    );

    // Deal with the file(s)...
    $x = 1;
    foreach( $files as $file )
    {
        $curl_post_data = array(
            "attachment[$x]" => curl_file_create( @$file['tempname'], $file['filetype'], $file['filename'])
        );
        $x ++;
    }

    echo "<pre>";
    print_r($curl_post_data);
    echo "</pre>";

    $service_url = 'https://api.mailgun.net/v3/sendmsg/messages';
    $curl = curl_init($service_url);
    curl_setopt($curl, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
    curl_setopt($curl, CURLOPT_USERPWD, "api:key-12322222");

    curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($curl, CURLOPT_HTTPHEADER, array('Content-Type: multipart/form-data'));
    curl_setopt($curl, CURLOPT_POST, true);

    curl_setopt($curl, CURLOPT_POSTFIELDS, $curl_post_data);
    curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);

    $curl_response = curl_exec($curl);
    $response = json_decode($curl_response);
    curl_close($curl);

    var_dump($curl_response);

The files array that gets to this function is as follows :

array(1) {
  [0]=>
  array(4) {
    ["filename"]=>
    string(8) "Paul.png"
    ["filetype"]=>
    string(9) "image/png"
    ["filepath"]=>
    string(14) "files/Paul.png"
    ["tempname"]=>
    string(24) "C:\xampp\tmp\php975D.tmp"
  }
}

Can anyone see anything in particular that may be causing this non sending issue?

Also worth noting, I'm working locally. If that's a possible issue too?

Thank You

StuBlackett
  • 3,789
  • 15
  • 68
  • 113
  • Something quick and easy to try would be to remove the `CURLOPT_HTTPHEADER` parameter since multipart/form-data is configured by cURL when `curl_file_create` is used according to https://stackoverflow.com/questions/34965313/using-php-curl-and-mailgun-api-to-send-mail-with-attachment-using-remote-file?rq=1 – Lawrence Johnson Feb 13 '19 at 20:47
  • I'm currently having issues sending attachments as well. https://stackoverflow.com/questions/54678804/mailgun-attachments-with-php-curl-no-sdk – Lawrence Johnson Feb 13 '19 at 20:47
  • Hey @LawrenceJohnson if it helps you in anyway, I got around my issue, by adding all files to a zip then sending that singular file. – StuBlackett Feb 14 '19 at 09:41
  • 1
    Right on, thanks for letting me know. I was able to get my problem to work as well, including with multiple attachments. With yours the one thing I see that doesn't look right is this `@$file['tempname']`. Zipping sounds like a good idea too, though. – Lawrence Johnson Feb 14 '19 at 09:54

0 Answers0