Mailgun Sent mail With attachment

2019-01-11 19:52发布

I am facing issue when mail having attachment sent using mailgun. If anyone has done this thing please reply. This is my code...

$mg_api = 'key-3ax6xnjp29jd6fds4gc373sgvjxteol0';
$mg_version = 'api.mailgun.net/v2/';
$mg_domain = "samples.mailgun.org";
$mg_from_email = "info@samples.com";
$mg_reply_to_email = "info@samples.org";

$mg_message_url = "https://".$mg_version.$mg_domain."/messages";


$ch = curl_init();
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);

curl_setopt ($ch, CURLOPT_MAXREDIRS, 3);
curl_setopt ($ch, CURLOPT_FOLLOWLOCATION, false);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($ch, CURLOPT_VERBOSE, 0);
curl_setopt ($ch, CURLOPT_HEADER, 1);
curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, 10);
curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt ($ch, CURLOPT_SSL_VERIFYHOST, 0);

curl_setopt($ch, CURLOPT_USERPWD, 'api:' . $mg_api);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

curl_setopt($ch, CURLOPT_POST, true); 
//curl_setopt($curl, CURLOPT_POSTFIELDS, $params); 
curl_setopt($ch, CURLOPT_HEADER, false); 

//curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($ch, CURLOPT_URL, $mg_message_url);
curl_setopt($ch, CURLOPT_POSTFIELDS,                
        array(  'from'      => 'aaaa <' . 'aaa@aaa.com' . '>',
                'to'        => 'test.client91@gmail.com',
                'h:Reply-To'=>  ' <' . $mg_reply_to_email . '>',
                'subject'   => 'aaaaa'.time(),
                'html'      => 'aaaaaa',
                'attachment'[1] => 'aaa.rar'
            ));
$result = curl_exec($ch);
curl_close($ch);
$res = json_decode($result,TRUE);
print_r($res);

(I have used my mailgun settings)

I receive the email without the attachment. If I use the URL path it displays the URL instead of the attachment.

8条回答
Juvenile、少年°
2楼-- · 2019-01-11 20:33

You need to change the last parameter in the following way: attachment[1]' => '@aaa.rar

We have some samples in our documentation for this use case. Just click PHP in the top bar to switch the language. http://documentation.mailgun.net/user_manual.html#examples-sending-messages-via-http

Please don't hesitate to send us an email with any questions to support@mailgunhq.com. We are always happy to help.

查看更多
Juvenile、少年°
3楼-- · 2019-01-11 20:36

This worked for me...

class Email {

    function send($array, $file_array) {
        $mgClient = new Mailgun('YOUR_MAILGUN_API_KEY');
        $domain = "mg.YOUR_DOMAIN.com";
        $result = $mgClient->sendMessage($domain, $array, array('attachment' => $file_array));
        return $result;
    }   
}

$array = array(
    'from'    => 'From <from@from.com>',
    'to'      => 'To <to@to.com>',
    'subject' => 'Your Subject',
    'html'    => '<h1>Hooray!</h1>',
);

$file_array = array('/var/www/scripts/test.csv');
echo json_encode($Email::send($array, $file_array));
查看更多
登录 后发表回答