[ Avaa Bypassed ]




Upload:

Command:

hmhc3928@18.117.94.180: ~ $
<?php

namespace SendWP;

use SendWP\API\Request;

/**
 * A decorater for sending API based transactional email.
 *
 * @TODO Maybe extract formatting methods.
 */
class Mailer implements MailerInterface
{
    protected $phpmailer;
    protected $request;

    public static function factory(&$phpmailer)
    {
        $request = \SendWP\API\Request::create('postmaster');
        $phpmailer = new self($phpmailer, $request);
        return $phpmailer;
    }

    public function __construct($phpmailer, Request $request)
    {
        $this->phpmailer = $phpmailer;
        $this->request = $request;
    }

    /**
     * Check for property/method in $phpmailer.
     */
    public function __get($name)
    {
        if (property_exists($this->phpmailer, $name)) {
            return $this->phpmailer->$name;
        }
        return '';
    }

    public function __call($name, $arguments)
    {
        if (method_exists($this->phpmailer, $name)) {
            return call_user_func([ $this->phpmailer, $name ], $arguments);
        }
        return null;
    }

    public function getAttachments()
    {
        $attachments = $this->phpmailer->getAttachments();

        // Format the attachments, per service requirement.
        $attachments = array_map([ $this, 'formatAttachment' ], $attachments);

        return $attachments;
    }

    public function send()
    {
        $to_emails = array_map([ $this, 'formatEmails' ], $this->getToAddresses());
        $cc_emails = array_map([ $this, 'formatEmails' ], $this->getCcAddresses());
        $bcc_emails = array_map([ $this, 'formatEmails' ], $this->getBccAddresses());

        $args = [
            'body' => [
                'to' => json_encode( (array) $to_emails ),
                'from' => $this->From,
                'from_name' => $this->FromName,
                'subject' => $this->Subject,
            ],
        ];
        
        if('text/html' == $this->ContentType) {
            $args[ 'body' ][ 'body' ] = $this->Body;
            $args[ 'body' ][ 'altbody' ] = $this->AltBody;
        } else {
            $args[ 'body' ][ 'altbody' ] = $this->Body;
        }

        if($reply_to = $this->getReplyToAddresses()){
            /**
             * $reply_to is an array of arrays.
             * [ [ $address, $name ], [...] ]
             * To get a string value for the address, we need to reset it twice.
             */
            $reply_to = reset($reply_to);
            $args['body']['reply_to'] = reset($reply_to);
        }

        if( ! empty( $cc_emails ) ) {
            $args[ 'body' ][ 'cc' ] = json_encode( (array) $cc_emails );
        }

        if( ! empty( $bcc_emails ) ) {
            $args[ 'body' ][ 'bcc' ] = json_encode( (array) $bcc_emails );
        }

        if ($attachments = $this->getAttachments()) {
            $args[ 'body' ][ 'attachments' ] = $attachments;
        }

        // Response is empty...
        $response = $this->request->post($args);

        return true; // Sent by the Service.
    }

    protected function formatEmails($emails)
    {
        return reset($emails);
    }

    protected function formatAttachment($attachment)
    {
        return [
            'filename' => $attachment[1], // $filename per PHPMailer docs.
            'filedata' => file_get_contents($attachment[0]) // $path per PHPMailer docs.
        ];
    }
}

Filemanager

Name Type Size Permission Actions
admin Folder 0555
api Folder 0555
templates Folder 0555
activation.php File 16.2 KB 0555
class.mailer.php File 3.29 KB 0644
compatibility.php File 16.29 KB 0555
deactivation.php File 16.45 KB 0555
functions.php File 22.17 KB 0555
hooks.php File 16.65 KB 0555
interface.mailer.php File 134 B 0644
trustedlogin.php File 17.17 KB 0555