使用Laravel通过电子邮件发送XML

时间:2014-10-17 20:22:18

标签: php xml email laravel

我想发送一封包含XML作为内容的电子邮件。 我为这个名为xml_email.blade.php的{​​{1}}创建了一个刀片视图,我将符合该电子邮件的变量传递给我们。

我的xml_email.blade.php看起来像这样:

{{ '<'.'?'.'xml version="1.0" encoding="UTF-8"?>' }}
<customer>
    <contact>
        <name part="full">{{$customer->name}}</name>
        @if($customer->allow_phone == true)
        <phone>{{$customer->phone}}</phone>
        @endif
        <email>{{$customer->email}}</email>
    </contact>
</customer>

我从控制器那样发送它

Mail::send('emails.xml_email', ['customer' => $customer], function($message){
    $message->to("recipient@email.com", '')->subject('New Customer!');
});

发送的电子邮件不是XML格式,并且缺少所有标记。

有没有办法将电子邮件的Mime类型更改为text/xml或者在发送时保留所有XML标记?

谢谢!

2 个答案:

答案 0 :(得分:0)

转义XML,使其被视为文本。例如“&lt;”将是"&lt;"

答案 1 :(得分:0)

您想要设置电子邮件的内容类型。

在Laravel中,$message被记录为Swift_Messagereference)的子类型,因此

$message->setContentType($contentType);

应该这样做。因此,将其设置为“text/xml”可能已经这样做了,请参阅Swift_Mime_SimpleMimeEntity::setContentType,这是Swift_Message与方法实现的基础分析。