1313use Magento \Framework \Phrase ;
1414use 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