我使用Zend_View來模板文本電子郵件內容。但是,我遇到了一個我一直無法解決的問題:如果一行以一個php塊(?>)結尾,那麼換行符會丟失。使用Zend_View丟失換行符的文本電子郵件模板
有沒有人有任何想法我可以解決這個問題?
該應用程序使用Zend框架,但我沒有特別的理由使用Zend_View來呈現電子郵件模板(除了它看起來是最簡單,最明顯的方法),所以如果有替代解決方案,好。
我試過檢查原始文本輸出,並且換行符完全丟失。沒有「\ r」或「\ n」可以看到,所以我沒有什麼可以替代的。
代碼發送電子郵件:
$emailView = new Zend_View(); $emailView->setScriptPath(realpath (FRONTEND_APPLICATION_PATH .'/../email/')); $bodyText = $emailView->render('recruitment-job-alert-text.phtml'); // $model = new Model_VacancyDetail(); // $model->find(1); // $emailView->vacancyDetail = $model; $mail = new Zend_Mail(); $mail->setSubject('Job Alert: ' . $model->references['vacancy_type']); $mail->addTo($fromEmail, $fromName); $mail->setFrom($fromEmail, $fromName); $mail->setBodyHtml($bodyHtml); $mail->setBodyText($bodyText); $mail->send();
電子郵件模板內容:
Title: <?= $this->escape($this->vacancyDetail->references['vacancy_type']) ?> Location: <?= $this->vacancyDetail->references['name'] ?> Department: <?= $this->vacancyDetail->references['department_name'] ?> Require Driving Licence: <?= ($this->vacancyDetail->requireDrivingLicence == 1) ? 'Yes' : 'No' ?> Working Hours: <?= $this->vacancyDetail->workingHours ?>. Benefits: <?= $this->vacancyDetail->benefits ?>. Salary: <?= $this->vacancyDetail->salary ?>. Details: <?= strip_tags($this->vacancyDetail->description) ?> Apply now at http://www.example.com/recruitment
導致郵件內容的例子:
Title: Example Vacancy Type Location: Example LocationDepartment: Example DepartmentRequire Driving Licence: YesWorking Hours: 40. Benefits: Company car. Salary: £15,000pa. Details: This is an example position. It does not really exist. Apply now at http://www.example.com/recruitment
電子郵件是否顯示換行符或者在PHP腳本查看時是否沒有文本?即var_dump($ bodyText);死;那麼在腳本中查看源代碼,是否仍然存在換行符?如果是這樣,那麼這是郵件的一部分,否則它是zend_view。 – 2010-08-04 13:18:13
在渲染視圖之後,它們並不在視圖中,但在它們被放入Zend_Mail之前,所以它看起來像是Zend_View或php本身的問題(還沒有看到Zend_View如何渲染文件) – AllenJB 2010-08-04 15:48:27