![]() Server : Apache System : Linux server2.corals.io 4.18.0-348.2.1.el8_5.x86_64 #1 SMP Mon Nov 15 09:17:08 EST 2021 x86_64 User : corals ( 1002) PHP Version : 7.4.33 Disable Function : exec,passthru,shell_exec,system Directory : /home/corals/www/wp-content/plugins/post-smtp/Postman/Postman-Mail/Services/MailGun/ |
<?php class PostmanMailGun extends PostmanServiceRequest { /** * Success Code * * @since 2.2 * @version 1.0 */ private $email_sent_code = 200; /** * API Key * * @since 2.2 * @version 1.0 */ private $api_key = ''; /** * Base URL US Region * * @since 2.2 * @version 1.0 */ private $base_url_us = 'https://api.mailgun.net/v3/'; /** * Base URL EU Region * * @since 2.2 * @version 1.0 */ private $base_url_eu = 'https://api.eu.mailgun.net/v3/'; /** * Content * * @since 2.2 * @version 1.0 */ private $content = array(); /** * constructor PostmanMailGun * * @param $api_key * @since 2.2 * @version 1.0 */ public function __construct( $api_key, $region, $domain ) { $base_url = ! is_null( $region ) ? $this->base_url_eu : $this->base_url_us; $base_url .= $domain; $this->api_key = $api_key; parent::__construct( $base_url ); } /** * Prepares Header for Request * * @since 2.2 * @version 1.0 */ private function get_headers() { $headers = array(); $headers['Authorization'] = 'Basic ' . base64_encode('api:' . $this->api_key); if( isset( $this->content['attachment'] ) ) { //Remove attachment from content, to manage it separately $attachments = $this->content['attachment']; unset( $this->content['attachment'] ); //Let's create the boundary string. It must be unique //so we use the MD5 algorithm to generate a random hash $boundary = md5( date( 'r', time() ) ); $headers['Content-Type'] = 'multipart/form-data; boundary=' . $boundary; $payload = ''; foreach( $this->content as $key => $value ) { if ( is_array( $value ) ) { foreach ( $value as $child_value ) { $payload .= '--' . $boundary; $payload .= "\r\n"; $payload .= 'Content-Disposition: form-data; name="' . $key . "\"\r\n\r\n"; $payload .= $child_value; $payload .= "\r\n"; } } else { $payload .= '--' . $boundary; $payload .= "\r\n"; $payload .= 'Content-Disposition: form-data; name="' . $key . '"' . "\r\n\r\n"; $payload .= $value; $payload .= "\r\n"; } } //Add attachments foreach( $attachments as $key => $attachment ) { $payload .= '--' . $boundary; $payload .= "\r\n"; $payload .= 'Content-Disposition: form-data; name="attachment[' . $key . ']"; filename="' . $attachment['filePath'] . '"' . "\r\n\r\n"; $payload .= file_get_contents( $attachment['filePath'] ); $payload .= "\r\n"; } $payload .= '--' . $boundary . '--'; //Overwrite body with payload $this->content = $payload; } else { $headers['Content-Type'] = 'application/x-www-form-urlencoded'; } return $headers; } /** * Sends Email using MailGun email end point * * @param $api_key * @since 2.2 * @version 1.0 */ public function send( $content ) { $this->content = $content; return $this->request( 'POST', '/messages', $this->get_headers(), $this->content, $this->email_sent_code ); } }