@@ -42,14 +42,14 @@ public function beforeSendPerformed(\Swift_Events_SendEvent $evt)
4242 || ($ message ->getContentType () === 'multipart/mixed ' && $ message ->getBody ())
4343 ) {
4444 [$ body , $ cssResources ] = $ this ->messageSieve ($ message ->getBody ());
45- $ css = $ this ->fetchCss ($ cssResources );
45+ $ css = $ this ->concatCss ($ cssResources );
4646 $ message ->setBody ($ this ->converter ->convert ($ body , $ css ));
4747 }
4848
4949 foreach ($ message ->getChildren () as $ part ) {
5050 if (strpos ($ part ->getContentType (), 'text/html ' ) === 0 ) {
5151 [$ body , $ cssResources ] = $ this ->messageSieve ($ part ->getBody ());
52- $ css = $ this ->fetchCss ($ cssResources );
52+ $ css = $ this ->concatCss ($ cssResources );
5353 $ part ->setBody ($ this ->converter ->convert ($ body , $ css ));
5454 }
5555 }
@@ -65,27 +65,36 @@ public function sendPerformed(\Swift_Events_SendEvent $evt)
6565 // Do Nothing
6666 }
6767
68- protected function fetchCss (array $ cssResources ): string
68+ protected function concatCss (array $ cssResources ): string
6969 {
7070 $ output = '' ;
7171 foreach ($ cssResources as $ cssResource ) {
72- if (isset ($ this ->cssCache [$ cssResource ])) {
73- $ output .= $ this ->cssCache [$ cssResource ];
74- continue ;
75- }
76- $ filename = $ cssResource ;
72+ $ output .= $ this ->fetchCss ($ cssResource );
73+ }
7774
78- // Fix relative protocols on hrefs. Assume https.
79- if (substr ($ filename , 0 , 2 ) === '// ' ) {
80- $ filename = 'https: ' . $ filename ;
81- }
75+ return $ output ;
76+ }
77+
78+ protected function fetchCss (string $ filename ): string
79+ {
80+ if (isset ($ this ->cssCache [$ filename ])) {
81+ return $ this ->cssCache [$ filename ];
82+ }
8283
83- $ content = file_get_contents ($ filename );
84- $ this ->cssCache [$ cssResource ] = $ content ;
85- $ output .= $ this ->cssCache [$ cssResource ];
84+ $ fixedFilename = $ filename ;
85+ // Fix relative protocols on hrefs. Assume https.
86+ if (substr ($ filename , 0 , 2 ) === '// ' ) {
87+ $ fixedFilename = 'https: ' . $ filename ;
8688 }
8789
88- return $ output ;
90+ $ content = file_get_contents ($ fixedFilename );
91+ if (! $ content ) {
92+ return '' ;
93+ }
94+
95+ $ this ->cssCache [$ filename ] = $ content ;
96+
97+ return $ content ;
8998 }
9099
91100 protected function messageSieve (string $ message ): array
0 commit comments