Server : Apache System : Linux host44.registrar-servers.com 4.18.0-513.18.1.lve.2.el8.x86_64 #1 SMP Sat Mar 30 15:36:11 UTC 2024 x86_64 User : vapecompany ( 2719) PHP Version : 7.4.33 Disable Function : NONE Directory : /home/vapecompany/demo.vapecompany.com.bd/vendor/laravel/framework/src/Illuminate/Mail/Transport/ |
Upload File : |
<?php namespace Illuminate\Mail\Transport; use GuzzleHttp\ClientInterface; use Swift_Mime_SimpleMessage; class MailgunTransport extends Transport { /** * Guzzle client instance. * * @var \GuzzleHttp\ClientInterface */ protected $client; /** * The Mailgun API key. * * @var string */ protected $key; /** * The Mailgun email domain. * * @var string */ protected $domain; /** * The Mailgun API endpoint. * * @var string */ protected $endpoint; /** * Create a new Mailgun transport instance. * * @param \GuzzleHttp\ClientInterface $client * @param string $key * @param string $domain * @param string|null $endpoint * @return void */ public function __construct(ClientInterface $client, $key, $domain, $endpoint = null) { $this->key = $key; $this->client = $client; $this->endpoint = $endpoint ?? 'api.mailgun.net'; $this->setDomain($domain); } /** * {@inheritdoc} */ public function send(Swift_Mime_SimpleMessage $message, &$failedRecipients = null) { $this->beforeSendPerformed($message); $to = $this->getTo($message); $bcc = $message->getBcc(); $message->setBcc([]); $response = $this->client->request( 'POST', "https://{$this->endpoint}/v3/{$this->domain}/messages.mime", $this->payload($message, $to) ); $messageId = $this->getMessageId($response); $message->getHeaders()->addTextHeader('X-Message-ID', $messageId); $message->getHeaders()->addTextHeader('X-Mailgun-Message-ID', $messageId); $message->setBcc($bcc); $this->sendPerformed($message); return $this->numberOfRecipients($message); } /** * Get the HTTP payload for sending the Mailgun message. * * @param \Swift_Mime_SimpleMessage $message * @param string $to * @return array */ protected function payload(Swift_Mime_SimpleMessage $message, $to) { return [ 'auth' => [ 'api', $this->key, ], 'multipart' => [ [ 'name' => 'to', 'contents' => $to, ], [ 'name' => 'message', 'contents' => $message->toString(), 'filename' => 'message.mime', ], ], ]; } /** * Get the "to" payload field for the API request. * * @param \Swift_Mime_SimpleMessage $message * @return string */ protected function getTo(Swift_Mime_SimpleMessage $message) { return collect($this->allContacts($message))->map(function ($display, $address) { return $display ? $display." <{$address}>" : $address; })->values()->implode(','); } /** * Get all of the contacts for the message. * * @param \Swift_Mime_SimpleMessage $message * @return array */ protected function allContacts(Swift_Mime_SimpleMessage $message) { return array_merge( (array) $message->getTo(), (array) $message->getCc(), (array) $message->getBcc() ); } /** * Get the message ID from the response. * * @param \Psr\Http\Message\ResponseInterface $response * @return string */ protected function getMessageId($response) { return object_get( json_decode($response->getBody()->getContents()), 'id' ); } /** * Get the API key being used by the transport. * * @return string */ public function getKey() { return $this->key; } /** * Set the API key being used by the transport. * * @param string $key * @return string */ public function setKey($key) { return $this->key = $key; } /** * Get the domain being used by the transport. * * @return string */ public function getDomain() { return $this->domain; } /** * Set the domain being used by the transport. * * @param string $domain * @return string */ public function setDomain($domain) { return $this->domain = $domain; } /** * Get the API endpoint being used by the transport. * * @return string */ public function getEndpoint() { return $this->endpoint; } /** * Set the API endpoint being used by the transport. * * @param string $endpoint * @return string */ public function setEndpoint($endpoint) { return $this->endpoint = $endpoint; } }