This repository has been archived on 2025-03-31. You can view files and clone it, but cannot push or open issues or pull requests.
php-frs/lib/Frs/Output/Transport/GmailTransport.php

72 lines
1.7 KiB
PHP

<?php
namespace Frs\Output\Transport;
class GmailTransport implements TransportInterface
{
private $gms;
private $recipients;
private $subject;
private $headers;
private $content;
public function __construct(\Frs\SessionManager $sm)
{
$this->gms = new \Google_Service_Gmail($sm->getGoogleClient());
}
public function setContent($content)
{
$this->content = $content;
}
public function setRecipients($recipients)
{
$this->recipients = $recipients;
}
public function setSubject($subject)
{
$this->subject = $subject;
}
public function setHeaders($headers)
{
$this->headers = $headers;
}
/**
* Base64 encoding with URL/filename safe characters.
* Taken from http://php.net/manual/en/function.base64-encode.php#103849
*
* @param string $data Date to encode
* @return string Encoded data
*/
private function b64url_encode($data)
{
return rtrim(strtr(base64_encode($data), '+/', '-_'), '=');
}
public function transmit()
{
$mime = new \Mail_mime();
$mime->setParam('html_charset', 'utf-8');
$mime->setParam('html_encoding', '8bit');
$mime->addTo($this->recipients);
$mime->setHTMLBody($this->content);
$mime->setSubject($this->subject);
$message_body = $mime->getMessage(null, null, $this->headers);
$encoded_message = $this->b64url_encode($message_body);
$postBody = new \Google_Service_Gmail_Message();
$postBody->setRaw($encoded_message);
$msg = $this->gms->users_messages->send('me', $postBody);
if ($msg->getId()) {
return true;
}
return false;
}
}