Initial commit
This commit is contained in:
@@ -0,0 +1,141 @@
|
||||
<?php
|
||||
|
||||
namespace FluentMail\App\Services\Mailer\Providers\Smtp;
|
||||
|
||||
use FluentMail\Includes\Support\Arr;
|
||||
use FluentMail\Includes\Core\Application;
|
||||
use FluentMail\App\Services\Mailer\BaseHandler;
|
||||
use FluentMail\App\Services\Mailer\Providers\Smtp\ValidatorTrait;
|
||||
|
||||
class Handler extends BaseHandler
|
||||
{
|
||||
use ValidatorTrait;
|
||||
|
||||
public function send()
|
||||
{
|
||||
if ($this->preSend()) {
|
||||
if ($this->getSetting('auto_tls') == 'no') {
|
||||
$this->phpMailer->SMTPAutoTLS = false;
|
||||
}
|
||||
return $this->postSend();
|
||||
}
|
||||
|
||||
return $this->handleResponse(new \WP_Error(422, __('Something went wrong!', 'fluent-smtp'), []));
|
||||
}
|
||||
|
||||
protected function postSend()
|
||||
{
|
||||
try {
|
||||
$this->phpMailer->isSMTP();
|
||||
$this->phpMailer->Host = $this->getSetting('host');
|
||||
$this->phpMailer->Port = $this->getSetting('port');
|
||||
|
||||
if ($this->getSetting('auth') == 'yes') {
|
||||
$this->phpMailer->SMTPAuth = true;
|
||||
$this->phpMailer->Username = $this->getSetting('username');
|
||||
$this->phpMailer->Password = $this->getSetting('password');
|
||||
}
|
||||
|
||||
if (($encryption = $this->getSetting('encryption')) != 'none') {
|
||||
$this->phpMailer->SMTPSecure = $encryption;
|
||||
}
|
||||
|
||||
$fromEmail = $this->phpMailer->From;
|
||||
|
||||
if ($this->isForcedEmail() && !fluentMailIsListedSenderEmail($fromEmail)) {
|
||||
$fromEmail = $this->getSetting('sender_email');
|
||||
}
|
||||
|
||||
if (isset($this->phpMailer->FromName)) {
|
||||
$fromName = $this->phpMailer->FromName;
|
||||
|
||||
if (
|
||||
$this->getSetting('force_from_name') == 'yes' &&
|
||||
$customFrom = $this->getSetting('sender_name')
|
||||
) {
|
||||
$fromName = $customFrom;
|
||||
}
|
||||
|
||||
$this->phpMailer->setFrom($fromEmail, $fromName);
|
||||
} else {
|
||||
$this->phpMailer->setFrom($fromEmail);
|
||||
}
|
||||
|
||||
foreach ($this->getParam('to') as $to) {
|
||||
if (isset($to['name'])) {
|
||||
$this->phpMailer->addAddress($to['email'], $to['name']);
|
||||
} else {
|
||||
$this->phpMailer->addAddress($to['email']);
|
||||
}
|
||||
}
|
||||
|
||||
foreach ($this->getParam('headers.reply-to') as $replyTo) {
|
||||
if (isset($replyTo['name'])) {
|
||||
$this->phpMailer->addReplyTo($replyTo['email'], $replyTo['name']);
|
||||
} else {
|
||||
$this->phpMailer->addReplyTo($replyTo['email']);
|
||||
}
|
||||
}
|
||||
|
||||
foreach ($this->getParam('headers.cc') as $cc) {
|
||||
if (isset($cc['name'])) {
|
||||
$this->phpMailer->addCC($cc['email'], $cc['name']);
|
||||
} else {
|
||||
$this->phpMailer->addCC($cc['email']);
|
||||
}
|
||||
}
|
||||
|
||||
foreach ($this->getParam('headers.bcc') as $bcc) {
|
||||
if (isset($bcc['name'])) {
|
||||
$this->phpMailer->addBCC($bcc['email'], $bcc['name']);
|
||||
} else {
|
||||
$this->phpMailer->addBCC($bcc['email']);
|
||||
}
|
||||
}
|
||||
|
||||
if ($attachments = $this->getParam('attachments')) {
|
||||
foreach ($attachments as $attachment) {
|
||||
$this->phpMailer->addAttachment($attachment[0], $attachment[7]);
|
||||
}
|
||||
}
|
||||
|
||||
if ($this->getParam('headers.content-type') == 'text/html' || $this->getParam('headers.content-type') == 'multipart/alternative') {
|
||||
$this->phpMailer->isHTML(true);
|
||||
}
|
||||
|
||||
$this->phpMailer->Subject = $this->getSubject();
|
||||
|
||||
$this->phpMailer->Body = $this->getParam('message');
|
||||
|
||||
if ($this->getParam('headers.content-type') == 'multipart/alternative') {
|
||||
$this->phpMailer->AltBody = $this->getParam('alt_body');
|
||||
$this->phpMailer->ContentType = 'multipart/alternative';
|
||||
}
|
||||
|
||||
$this->phpMailer->send();
|
||||
|
||||
$returnResponse = [
|
||||
'response' => 'OK'
|
||||
];
|
||||
|
||||
} catch (\Exception $e) {
|
||||
$returnResponse = new \WP_Error(422, $e->getMessage(), []);
|
||||
}
|
||||
|
||||
$this->response = $returnResponse;
|
||||
|
||||
return $this->handleResponse($this->response);
|
||||
}
|
||||
|
||||
public function setSettings($settings)
|
||||
{
|
||||
if (Arr::get($settings, 'key_store') == 'wp_config') {
|
||||
$settings['username'] = defined('FLUENTMAIL_SMTP_USERNAME') ? FLUENTMAIL_SMTP_USERNAME : '';
|
||||
$settings['password'] = defined('FLUENTMAIL_SMTP_PASSWORD') ? FLUENTMAIL_SMTP_PASSWORD : '';
|
||||
}
|
||||
|
||||
$this->settings = $settings;
|
||||
|
||||
return $this;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,50 @@
|
||||
<?php
|
||||
|
||||
namespace FluentMail\App\Services\Mailer\Providers\Smtp;
|
||||
|
||||
use FluentMail\Includes\Support\Arr;
|
||||
use FluentMail\App\Services\Mailer\ValidatorTrait as BaseValidatorTrait;
|
||||
|
||||
trait ValidatorTrait
|
||||
{
|
||||
use BaseValidatorTrait;
|
||||
|
||||
public function validateProviderInformation($connection)
|
||||
{
|
||||
$errors = [];
|
||||
|
||||
$keyStoreType = Arr::get($connection, 'key_store', 'db');
|
||||
|
||||
if (!Arr::get($connection, 'host')) {
|
||||
$errors['host']['required'] = __('SMTP host is required.', 'fluent-smtp');
|
||||
}
|
||||
|
||||
if (!Arr::get($connection, 'port')) {
|
||||
$errors['port']['required'] = __('SMTP port is required.', 'fluent-smtp');
|
||||
}
|
||||
|
||||
if (Arr::get($connection, 'auth') == 'yes') {
|
||||
if ($keyStoreType == 'wp_config') {
|
||||
if (!defined('FLUENTMAIL_SMTP_USERNAME') || !FLUENTMAIL_SMTP_USERNAME) {
|
||||
$errors['username']['required'] = __('Please define FLUENTMAIL_SMTP_USERNAME in wp-config.php file.', 'fluent-smtp');
|
||||
}
|
||||
|
||||
if (!defined('FLUENTMAIL_SMTP_PASSWORD') || !FLUENTMAIL_SMTP_PASSWORD) {
|
||||
$errors['password']['required'] = __('Please define FLUENTMAIL_SMTP_PASSWORD in wp-config.php file.', 'fluent-smtp');
|
||||
}
|
||||
} else {
|
||||
if (!Arr::get($connection, 'username')) {
|
||||
$errors['username']['required'] = __('SMTP username is required.', 'fluent-smtp');
|
||||
}
|
||||
|
||||
if (!Arr::get($connection, 'password')) {
|
||||
$errors['password']['required'] = __('SMTP password is required.', 'fluent-smtp');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if ($errors) {
|
||||
$this->throwValidationException($errors);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user