我正在尝试发送包含多个部分的电子邮件。此电子邮件在Gmail,Thunderbird上正确显示,但在Outlook邮件客户端上的效果与预期不同。在Outlook邮件客户端上,邮件的第一部分显示为内容,而其余部分显示为附件(即每个部分一个附件)。 示例代码段:
namespace MyProject\Service;
use Zend\Mime\Part as MimePart;
use Zend\Mime\Message as MimeMessage;
use Zend\Mail\Message;
use Zend\Mail\Transport\Sendmail;
class MailService
{
/**
* @throws \Exception
*/
public function sendMail() : void
{
$htmlPart1 = new MimePart('<html>
<body>
<table>
<tr><td>Test data 1</td></tr>
<tr><td>Test data 1</td></tr>
<tr><td>Test data 1</td></tr>
<tr><td>Test data 1</td></tr>
<tr><td>Test data 1</td></tr><tr>
<td>Test data 1</td></tr>
</table>
</body>
</html>');
$htmlPart1->type = 'text/html';
$htmlPart2 = new MimePart('<html>
<body>
<table>
<tr><td>Test data 2</td></tr>
<tr><td>Test data 2</td></tr>
<tr><td>Test data 2</td></tr>
<tr><td>Test data 2</td></tr>
<tr><td>Test data 2</td></tr><tr>
<td>Test data 2</td></tr>
</table>
</body>
</html>');
$htmlPart2->type = 'text/html';
$body = new MimeMessage();
$body->setParts(array($htmlPart1, $htmlPart2));
$mail = new Message();
$mail->setBody($body);
$mail->setFrom('Freeaqingme@example.org', 'Sender\'s name');
$mail->addTo(<SOME_OUTLOOK_EMAIL>, 'Name');
$mail->addTo(<SOME_GMAIL_EMAIL>, 'Name');
$mail->setSubject('TestSubject');
try{
$transport = new Sendmail();
$transport->send($mail);
} catch (\Exception $e){
throw $e;
}
}
}
在上面的代码段中,<SOME_OUTLOOK_EMAIL>
=一些现有的Outlook电子邮件和<SOME_GMAIL_EMAIL>
=一些现有的Gmail电子邮件。
请注意,上面的代码片段是使用ZF2开发的。当我们在项目中使用ZF1时,我们也遇到了同样的问题。
当我们搜索解决方案时,我们遇到ZF1 Issue reported,但我们无法确定正确的解决方案。换句话说,这是与ZF邮件库有关的东西,还是与交换服务器/邮件客户端有关的东西,无法通过源代码处理。
如果有人帮我解决问题,那将会非常有帮助。