mirror of
https://github.com/Combodo/iTop.git
synced 2026-02-13 07:24:13 +01:00
Merge branch 'support/3.2' into develop
This commit is contained in:
@@ -418,6 +418,7 @@ return array(
|
|||||||
'Combodo\\iTop\\Core\\Email\\EmailFactory' => $baseDir . '/sources/Core/Email/EmailFactory.php',
|
'Combodo\\iTop\\Core\\Email\\EmailFactory' => $baseDir . '/sources/Core/Email/EmailFactory.php',
|
||||||
'Combodo\\iTop\\Core\\Email\\Transport\\SymfonyFileTransport' => $baseDir . '/sources/Core/Email/Transport/SymfonyFileTransport.php',
|
'Combodo\\iTop\\Core\\Email\\Transport\\SymfonyFileTransport' => $baseDir . '/sources/Core/Email/Transport/SymfonyFileTransport.php',
|
||||||
'Combodo\\iTop\\Core\\Email\\Transport\\SymfonyOAuthTransport' => $baseDir . '/sources/Core/Email/Transport/SymfonyOAuthTransport.php',
|
'Combodo\\iTop\\Core\\Email\\Transport\\SymfonyOAuthTransport' => $baseDir . '/sources/Core/Email/Transport/SymfonyOAuthTransport.php',
|
||||||
|
'Combodo\\iTop\\Core\\Email\\Transport\\SymfonyPHPMailTransport' => $baseDir . '/sources/Core/Email/Transport/SymfonyPHPMailTransport.php',
|
||||||
'Combodo\\iTop\\Core\\Email\\iEMail' => $baseDir . '/sources/Core/Email/iEMail.php',
|
'Combodo\\iTop\\Core\\Email\\iEMail' => $baseDir . '/sources/Core/Email/iEMail.php',
|
||||||
'Combodo\\iTop\\Core\\EventListener\\AttributeBlobEventListener' => $baseDir . '/sources/Core/EventListener/AttributeBlobEventListener.php',
|
'Combodo\\iTop\\Core\\EventListener\\AttributeBlobEventListener' => $baseDir . '/sources/Core/EventListener/AttributeBlobEventListener.php',
|
||||||
'Combodo\\iTop\\Core\\Kpi\\KpiLogData' => $baseDir . '/sources/Core/Kpi/KpiLogData.php',
|
'Combodo\\iTop\\Core\\Kpi\\KpiLogData' => $baseDir . '/sources/Core/Kpi/KpiLogData.php',
|
||||||
|
|||||||
@@ -773,6 +773,7 @@ class ComposerStaticInit7f81b4a2a468a061c306af5e447a9a9f
|
|||||||
'Combodo\\iTop\\Core\\Email\\EmailFactory' => __DIR__ . '/../..' . '/sources/Core/Email/EmailFactory.php',
|
'Combodo\\iTop\\Core\\Email\\EmailFactory' => __DIR__ . '/../..' . '/sources/Core/Email/EmailFactory.php',
|
||||||
'Combodo\\iTop\\Core\\Email\\Transport\\SymfonyFileTransport' => __DIR__ . '/../..' . '/sources/Core/Email/Transport/SymfonyFileTransport.php',
|
'Combodo\\iTop\\Core\\Email\\Transport\\SymfonyFileTransport' => __DIR__ . '/../..' . '/sources/Core/Email/Transport/SymfonyFileTransport.php',
|
||||||
'Combodo\\iTop\\Core\\Email\\Transport\\SymfonyOAuthTransport' => __DIR__ . '/../..' . '/sources/Core/Email/Transport/SymfonyOAuthTransport.php',
|
'Combodo\\iTop\\Core\\Email\\Transport\\SymfonyOAuthTransport' => __DIR__ . '/../..' . '/sources/Core/Email/Transport/SymfonyOAuthTransport.php',
|
||||||
|
'Combodo\\iTop\\Core\\Email\\Transport\\SymfonyPHPMailTransport' => __DIR__ . '/../..' . '/sources/Core/Email/Transport/SymfonyPHPMailTransport.php',
|
||||||
'Combodo\\iTop\\Core\\Email\\iEMail' => __DIR__ . '/../..' . '/sources/Core/Email/iEMail.php',
|
'Combodo\\iTop\\Core\\Email\\iEMail' => __DIR__ . '/../..' . '/sources/Core/Email/iEMail.php',
|
||||||
'Combodo\\iTop\\Core\\EventListener\\AttributeBlobEventListener' => __DIR__ . '/../..' . '/sources/Core/EventListener/AttributeBlobEventListener.php',
|
'Combodo\\iTop\\Core\\EventListener\\AttributeBlobEventListener' => __DIR__ . '/../..' . '/sources/Core/EventListener/AttributeBlobEventListener.php',
|
||||||
'Combodo\\iTop\\Core\\Kpi\\KpiLogData' => __DIR__ . '/../..' . '/sources/Core/Kpi/KpiLogData.php',
|
'Combodo\\iTop\\Core\\Kpi\\KpiLogData' => __DIR__ . '/../..' . '/sources/Core/Kpi/KpiLogData.php',
|
||||||
|
|||||||
@@ -12,6 +12,7 @@ use AsyncSendEmail;
|
|||||||
use Combodo\iTop\Core\Authentication\Client\OAuth\OAuthClientProviderFactory;
|
use Combodo\iTop\Core\Authentication\Client\OAuth\OAuthClientProviderFactory;
|
||||||
use Combodo\iTop\Core\Email\Transport\SymfonyFileTransport;
|
use Combodo\iTop\Core\Email\Transport\SymfonyFileTransport;
|
||||||
use Combodo\iTop\Core\Email\Transport\SymfonyOAuthTransport;
|
use Combodo\iTop\Core\Email\Transport\SymfonyOAuthTransport;
|
||||||
|
use Combodo\iTop\Core\Email\Transport\SymfonyPHPMailTransport;
|
||||||
use DOMDocument;
|
use DOMDocument;
|
||||||
use DOMXPath;
|
use DOMXPath;
|
||||||
use EMail;
|
use EMail;
|
||||||
@@ -232,7 +233,7 @@ class EMailSymfony extends Email
|
|||||||
case 'PHPMail':
|
case 'PHPMail':
|
||||||
default:
|
default:
|
||||||
// Use sendmail transport
|
// Use sendmail transport
|
||||||
$oTransport = Transport::fromDsn('sendmail://default');
|
$oTransport = new SymfonyPHPMailTransport();
|
||||||
$oMailer = new Mailer($oTransport);
|
$oMailer = new Mailer($oTransport);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
98
sources/Core/Email/Transport/SymfonyPHPMailTransport.php
Normal file
98
sources/Core/Email/Transport/SymfonyPHPMailTransport.php
Normal file
@@ -0,0 +1,98 @@
|
|||||||
|
<?php
|
||||||
|
namespace Combodo\iTop\Core\Email\Transport;
|
||||||
|
|
||||||
|
use Symfony\Component\Mailer\SentMessage;
|
||||||
|
use Symfony\Component\Mailer\Transport\AbstractTransport;
|
||||||
|
use Symfony\Component\Mime\Email;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Transport that uses PHP's mail() function to send emails
|
||||||
|
*/
|
||||||
|
class SymfonyPHPMailTransport extends AbstractTransport
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* @param Email $oRawEmail
|
||||||
|
*
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
public function prepareTo(Email $oRawEmail): string
|
||||||
|
{
|
||||||
|
$oHeaders = $oRawEmail->getHeaders();
|
||||||
|
|
||||||
|
return $oHeaders->get('To')->getBodyAsString();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param Email $oRawEmail
|
||||||
|
*
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
private function prepareSubject(Email $oRawEmail): string
|
||||||
|
{
|
||||||
|
$oHeaders = $oRawEmail->getHeaders();
|
||||||
|
return $oHeaders->get('Subject')->getBodyAsString();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param Email $oRawEmail
|
||||||
|
*
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
public function prepareBody(Email $oRawEmail): string
|
||||||
|
{
|
||||||
|
return $oRawEmail->getBody() ? $oRawEmail->getBody()->bodyToString() : '';
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param Email $oRawEmail
|
||||||
|
*
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
public function prepareHeaders(Email $oRawEmail): string
|
||||||
|
{
|
||||||
|
$oHeaders = $oRawEmail->getPreparedHeaders();
|
||||||
|
// Render all headers except "To" (mail() has a dedicated argument for that), including body headers
|
||||||
|
$sHeaders = '';
|
||||||
|
foreach ($oHeaders->all() as $header) {
|
||||||
|
if (strtolower($header->getName()) !== 'to' && strtolower($header->getName()) !== 'subject') {
|
||||||
|
$sHeaders .= $header->toString() . "\r\n";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$oBodyHeader = $oRawEmail->getBody()->getPreparedHeaders();
|
||||||
|
foreach ($oBodyHeader->all() as $header) {
|
||||||
|
$sHeaders .= $header->toString() . "\r\n";
|
||||||
|
}
|
||||||
|
|
||||||
|
// Remove trailing line break
|
||||||
|
$sHeaders = rtrim($sHeaders, "\r\n");
|
||||||
|
return $sHeaders;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected function doSend(SentMessage $message): void
|
||||||
|
{
|
||||||
|
$oRawEmail = $message->getOriginalMessage();
|
||||||
|
|
||||||
|
if (!$oRawEmail instanceof Email) {
|
||||||
|
throw new \LogicException('SymfonyPHPMailTransport only supports Email instances.');
|
||||||
|
}
|
||||||
|
|
||||||
|
$sTo = $this->prepareTo($oRawEmail);
|
||||||
|
$sSubject = $this->prepareSubject($oRawEmail);
|
||||||
|
$sBody = $this->prepareBody($oRawEmail);
|
||||||
|
$sHeaders = $this->prepareHeaders($oRawEmail);
|
||||||
|
|
||||||
|
$success = mail($sTo, $sSubject, $sBody, $sHeaders);
|
||||||
|
|
||||||
|
|
||||||
|
if (!$success) {
|
||||||
|
throw new \RuntimeException('The mail() function failed to send the message. Check server mail configuration.');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public function __toString(): string
|
||||||
|
{
|
||||||
|
return 'phpmail://default';
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user