Back | Home
الـ Path الحالي: /home/picotech/domains/instantly.picotech.app/public_html/public/uploads/../../app/EmailProvider
الملفات الموجودة في هذا الـ Path:
.
..
AmazonSmtp.php
ElasticApi.php
ElasticSmtp.php
MailGunApi.php
MailGunSmtp.php
SendEMail.php
SendGridApi.php
SendMailInterface.php
SendMailProcess.php
Sendmail.php
Smtp.php
SparkpostSmtp.php

مشاهدة ملف: SparkpostSmtp.php

<?php

namespace App\EmailProvider;


use Illuminate\Support\Facades\Config;
use Illuminate\Support\Facades\Log;
use Illuminate\Support\Facades\Mail;

class SparkpostSmtp implements SendMailInterface
{
    public function message($message){
        $this->message = $message;

        return $this;
    }

    public function from($from)
    {
        $this->from = $from;
        return $this;
    }
    public function from_name($from_name)
    {
        $this->from_name = $from_name;
        return $this;
    }
    public function reply_to($reply_to)
    {
        $this->reply_to = $reply_to;
        return $this;
    }
    public function to($to)
    {
        $this->to = $to;
        return $this;
    }

    public function subject($subject)
    {
        $this->subject = $subject;
        return $this;
    }

    public function body($body)
    {
        $this->body = $body;
        return $this;
    }

    public function files($files){
        $files  = json_decode($files);
        $files_arr = [];
        if ($files) {
            foreach ($files as $file) {
                $files_arr[] = $file;
            }
        }
        $this->files = $files_arr;
        return $this;
    }

    public function config($config){

        $this->config=$config;
        return $this;
    }

    public function process()
    {
        $config = array(
            'driver' => 'smtp',
            'host' => 'host',
            'port' => 'post',
            'from' => array('address' => $this->from, 'name' => $this->from_name),
            'encryption' => 'ssl',
            'username' => 'username',
            'password' => 'password',
        );
        Config::set('mail', $config);

        try {
            $server = $this->config;
            if(isset($server) && isset($server->value)) {
                $config_value = json_decode($server->value);
                $httpClient = new GuzzleAdapter(new Client());
                $sparky = new SparkPost($httpClient, ['key' => $config_value->api_key]);

                $sparky->setOptions(['async' => false]);
                $results = $sparky->transmissions->post([
                    'options' => [
                        'sandbox' => true
                    ],
                    'content' => [
                        'from' => $this->from,
                        'subject' => $this->subject,
                        'html' => $this->body
                    ],
                    'recipients' => [
                        ['address' => ['email' => $this->to]]
                    ]
                ]);
            }
        } catch (\Exception $ex) {
            Log::info($ex->getMessage());
        }
    }

    public function errors()
    {
        // TODO: Implement errors() method.
    }
}