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
مشاهدة ملف: AmazonSmtp.php
<?php
namespace App\EmailProvider;
use App\Models\MessageLog;
use Aws\Exception\AwsException;
use Aws\Ses\SesClient;
use Illuminate\Support\Facades\Config;
use Illuminate\Support\Facades\Log;
class AmazonSmtp 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()
{
if($this->message){
$this->message_log=MessageLog::updateOrCreate([
'to'=>$this->message->to,
'from'=>$this->message->from,
'message_id'=>$this->message->id,
'customer_id'=>$this->message->customer_id,
'type'=>'sent',
],['status'=>'succeed','queue_id'=>$this->message->id]);
$messageLog = $this->message_log;
}
try {
$server = $this->config;
if (isset($server) && isset($server->value)) {
$messageLog->status='pending';
$messageLog->save();
$templateBody = replaceMessageBody($this->body, $this->message_log->campaign_id, $this->message_log->id);
$config_value = json_decode($server->value);
$config = array(
'driver' => 'smtp',
'host' => "$config_value->hostname",
'port' => "$config_value->port",
'from' => array('address' => $this->message->reply_to, 'name' => $this->message->from_name),
'encryption' => "$config_value->encryption_method",
'username' => "$config_value->username",
'password' => "$config_value->password",
);
Config::set('mail', $config);
$SesClient = new SesClient([
'profile' => 'default',
'version' => '2010-12-01',
'region' => $config_value->region
]);
$sender_email = $this->from;
$recipient_emails = ["$this->to"];
$configuration_set = 'ConfigSet';
$subject = $this->subject;
$plaintext_body = $templateBody;
$html_body = $templateBody;
$result = $SesClient->sendEmail([
'Destination' => [
'ToAddresses' => $recipient_emails,
],
'ReplyToAddresses' => ["$this->reply_to"],
'Source' => $sender_email,
'Message' => [
'Body' => [
'Html' => [
'Charset' => 'UTF-8',
'Data' => $html_body,
],
'Text' => [
'Data' => $plaintext_body,
],
],
'Subject' => [
'Data' => $subject,
],
],
// If you aren't using a configuration set, comment or delete the
'ConfigurationSetName' => $configuration_set,
]);
if (isset($result) && isset($result['MessageId'])){
$messageLog->status='success';
$messageLog->save();
}
}
} catch (AwsException $e) {
$messageLog->status='failed';
$messageLog->save();
Log::info($e->getMessage());
}
}
public function errors()
{
// TODO: Implement errors() method.
}
}