Skip to content

Commit e70fe84

Browse files
committed
Version 1.0.8 preparation.
1 parent d8bc0b8 commit e70fe84

File tree

10 files changed

+699
-40
lines changed

10 files changed

+699
-40
lines changed

.DS_Store

8 KB
Binary file not shown.

CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
1+
### 1.0.8 - 2025-08-26
2+
### Changed
3+
- Added compatibility for Magento 2.4.8 and PHP 8.4 (SMTP-22)
4+
15
## 1.0.7 - 2024-11-06
26
### Changed
37
- Added compatibility for Magento 2.4.7-p2 and PHP 8.3

Model/Config.php

Lines changed: 18 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -350,25 +350,39 @@ public function prepareMessageToSend($message, $isTest = false)
350350

351351
/**
352352
* @param $emailData
353-
* @return \Laminas\Mail\Address
353+
* @return \Laminas\Mail\Address|\Symfony\Component\Mime\Address
354354
*/
355355
public function getNewAddress($emailData)
356356
{
357+
// Check if we're using Symfony Mailer (Magento 2.4.8+)
358+
if (class_exists('\Symfony\Component\Mime\Address')) {
359+
return new \Symfony\Component\Mime\Address($emailData['email'], $emailData['name']);
360+
}
361+
362+
// Fallback to Laminas for older versions
357363
return new \Laminas\Mail\Address($emailData['email'], $emailData['name']);
358364
}
359365

360366
/**
361367
* @param $emailsData
362-
* @return \Laminas\Mail\AddressList
368+
* @return \Laminas\Mail\AddressList|array
363369
*/
364370
public function getAddressList($emailsData)
365371
{
372+
// Check if we're using Symfony Mailer (Magento 2.4.8+)
373+
if (class_exists('\Symfony\Component\Mime\Address')) {
374+
$addressList = [];
375+
foreach ($emailsData as $data) {
376+
$addressList[] = new \Symfony\Component\Mime\Address($data['email'], isset($data['name']) ? $data['name'] : null);
377+
}
378+
return $addressList;
379+
}
380+
381+
// Fallback to Laminas for older versions
366382
$addressList = new \Laminas\Mail\AddressList();
367-
368383
foreach ($emailsData as $data) {
369384
$addressList->add($data['email'], isset($data['name']) ? $data['name'] : null);
370385
}
371-
372386
return $addressList;
373387
}
374388

Lines changed: 56 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
use Magento\Framework\Phrase;
1414
use Magento\Framework\Registry;
1515

16-
class Transport implements \Magento\Framework\Mail\TransportInterface
16+
class TransportLaminas implements \Magento\Framework\Mail\TransportInterface
1717
{
1818
const DEFAULT_LOCAL_CLIENT_HOSTNAME = 'localhost';
1919
const TEST_MESSAGE_SUBJECT = 'Aitoc SMTP Test';
@@ -148,8 +148,13 @@ public function sendMessage()
148148
$message = \Laminas\Mail\Message::fromString($this->message->getRawMessage())->setEncoding('utf-8');
149149
} else {
150150
$message = $this->message;
151+
if (!($message instanceof \Laminas\Mail\Message) && method_exists($this->message, 'getRawMessage')) {
152+
$message = \Laminas\Mail\Message::fromString($this->message->getRawMessage())->setEncoding('utf-8');
153+
}
151154
}
152155

156+
$message = $this->ensureBasicHeadersLaminas($message);
157+
153158
if ($this->aitConfig->isBlockedDelivery()) {
154159
$modifiedRecipient = $this->modifyTo();
155160

@@ -165,7 +170,7 @@ public function sendMessage()
165170
}
166171
}
167172

168-
$message = $modifiedRecipient;
173+
$message = $this->ensureBasicHeadersLaminas($modifiedRecipient);
169174
}
170175

171176
if ($message) {
@@ -188,6 +193,55 @@ public function sendMessage()
188193
}
189194
}
190195

196+
/**
197+
* Ensure basic headers (From/To/Subject) for Laminas message
198+
*
199+
* @param \Laminas\Mail\Message $message
200+
* @return \Laminas\Mail\Message
201+
*/
202+
private function ensureBasicHeadersLaminas(\Laminas\Mail\Message $message)
203+
{
204+
if (!$message->getFrom() || !$message->getFrom()->count()) {
205+
$fromData = $this->fromResolver->getFrom();
206+
if ($fromData) {
207+
$message->addFrom($fromData['email'], $fromData['name'] ?? null);
208+
} else {
209+
$senderData = $this->aitConfig->getSenderData();
210+
if ($senderData) {
211+
$message->addFrom($senderData['email'], $senderData['name'] ?? null);
212+
}
213+
}
214+
}
215+
216+
if (!$message->getTo() || !$message->getTo()->count()) {
217+
if (method_exists($this->message, 'getTo')) {
218+
$to = $this->message->getTo();
219+
if (is_array($to)) {
220+
foreach ($to as $toAddress) {
221+
if (is_object($toAddress) && method_exists($toAddress, 'getEmail')) {
222+
$message->addTo($toAddress->getEmail(), method_exists($toAddress, 'getName') ? $toAddress->getName() : null);
223+
} elseif (is_array($toAddress)) {
224+
$message->addTo($toAddress['email'] ?? ($toAddress[0] ?? ''), $toAddress['name'] ?? null);
225+
} elseif (is_string($toAddress)) {
226+
$message->addTo($toAddress);
227+
}
228+
}
229+
}
230+
}
231+
}
232+
233+
if (!$message->getSubject() && method_exists($this->message, 'getSubject')) {
234+
$subject = (string) $this->message->getSubject();
235+
if ($subject) {
236+
$message->setSubject($subject);
237+
}
238+
}
239+
240+
return $message;
241+
}
242+
243+
244+
191245
/**
192246
* @return \Aitoc\Smtp\Model\Log
193247
*/

0 commit comments

Comments
 (0)