我正在使用zend_视图模板文本电子邮件内容。然而,我遇到了一个无法解决的问题:如果一行以php块结束(?>),则断线丢失。
有人知道我怎么解决这个问题吗?
应用程序正在使用zend framework,但是我没有特别的理由使用zend_view来呈现电子邮件模板(除了它看起来是最简单、最明显的方式),所以如果有其他的解决方案,那就很好了。
我试过检查原始文本输出,换行符完全丢失。没有“\r”或“\n”可供查看,因此没有任何东西可以替换。
发送电子邮件的代码:
$emailview=new zend_view();
$emailview->setscriptpath(realpath(前端应用程序路径.'/../email/');
$bodyText=$emailview->render('recruitment-job-alert-text.phtml');
//$model=new model_vacancydetail();
//$model->查找(1);
//$emailview->vacancydetail=$型号;
$mail=new zend_mail();
$mail->setsubject('作业警报:'。$model->引用文件['空置类型'];
$mail->地址($frommail,$fromname);
$mail->setfrom($frommail,$fromname);
$mail->setbodyhtml($bodyhtml);
$mail->setbodyText($bodyText);
$mail->发送();
电子邮件模板内容:
题目:<?=$this->escape($this->vacancydetail->references['availance_type'])?>
地点:<?=$this->vacancydetail->引用['name']?>
部门:<?=$this->vacancydetail->引用[“部门名称]?>
要求驾照:<?=($this->vacancydetail->所需驾驶执照==1)?'是“:”否“?>
工作时间:<?=$this->vacancydetail->工作时间?>
好处:<?=$这个->Vacancydetail->福利?>
工资:<?=$这个->Vacancydetail->薪水?>
细节:
<?=删除标记($this->vacancydetail->description)?>
立即申请http://www.example.com/recruitment
生成的电子邮件内容示例:
标题:示例空缺类型
位置:示例位置部门:示例部门要求驾照:是工作时间:40。
福利:公司用车。
工资:15000pa英镑。
细节:
这是一个例子。它并不真的存在。
立即申请http://www.example.com/recruitment
最佳答案
我相信是php吃了换行符之后?>总的来说这是件好事,但我能理解为什么在你的情况下这很烦人。
你可能需要这样做:
Title: <?= $this->escape($this->vacancyDetail->references['vacancy_type'])."\n" ?>
Location: <?= $this->vacancyDetail->references['name']."\n" ?>
Department: <?= $this->vacancyDetail->references['department_name']."\n" ?>
编辑:
这里有一个证明我不会发疯的参考:http://www.php.net/manual/en/faq.using.php#faq.using.newlines
为什么这是件好事?想象一下你的邮件模板是:
Title: <?= $this->escape($this->vacancyDetail->references['vacancy_type'])."\n" ?>
<?php if (!empty($this->vacancyDetail->references['name'])) { ?>
Location: <?= $this->vacancyDetail->references['name']."\n" ?>
<?php } ?>
Departments:
<?php foreach ($this->vacancyDetail->references['departments'] as $dept) { ?>
<?=$dept->name."\n"?>
<?php } ?>
在这种情况下,您不希望在实际输出的每一行之间都有几行新行(我最近在一个非php项目的电子邮件模板中遇到了这个问题)。
另一种方法是不要将模板存储在php中,只需对变量使用{name}、{department}或类似的方法,然后将它们解析出来。