0

バックグラウンド

メールを送信するスクリプトがあります。このメールは問題なく送信されます。テンプレートが送信され、デザインは正常に機能し、すべてのハードコードされたテキストがそこにあります。

問題

メールは正常に送信されますが、すべての変数が欠落しています。

コード

フォルダー内boardroom_email.ctpの私の電子メールテンプレートは次のとおりです。APP/View/Emails/html/

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Untitled Document</title>
  </head>

  <body bgcolor="#CCCCCC">
    <table width="800" align="center" bgcolor="#8dc641" cellpadding="0" cellspacing="0">
      <tr>
        <td>
          <!-- Header Image -->
        </td>
      </tr>
      <tr>
        <td style="font-family:Arial, Helvetica, sans-serif; font-size:18px; font-weight:bold"><h3 align="center">New Boardroom Booking</h3></td>
      </tr>
      <tr>
        <td style="padding:10px">
          <table width="100%" cellpadding="5" cellspacing="5" style="font-family:Arial, Helvetica, sans-serif; font-size:14px" bgcolor="#FFFFFF">
            <tr>
              <td colspan="2">
                The following Boardroom Booking has been made
              </td>
            </tr>
            <tr>
              <td width="30%">
                <b>Requested By:</b>
              </td>
              <td width="70%">
                <?php echo $BoardroomBooking['BoardroomBooking']['name'] ?>
              </td>
            </tr>
<!-- File truncated because the rest just repeats the above variable -->

ここにあるのは、レコードが正常に保存されたときに呼び出される BoardroomBookingsController の関数です。

function _sendNewBoardroomBookingMail($id) {
    $BoardroomBooking = $this->BoardroomBooking->read(null,$id);
    $this->Email->to = array('Person 1 <person1@mycompany.com>', 'Person 2 <person2@mycompany.com>');
    $this->Email->subject = 'A new boardroom booking has been made';
    $this->Email->replyTo = 'no-reply@mycompany.com';
    $this->Email->from = 'My Company Intraweb <no-reply@mycompany.com>';
    $this->Email->template = 'boardroom_email';
    $this->Email->sendAs = 'html';
    $this->set('BoardroomBooking', $BoardroomBooking);
    $this->Email->delivery = 'smtp';
    $this->Email->_debug = true;
    if ($this->Email->send()) {
        return true;
    } else {
        return false;
    }
}

結果

これは上記のコードが私に送るものです:

ここに画像の説明を入力

質問

明らかに、私は何か小さなものを見逃しています。ある段階では動作していましたが、何かを変更したことを覚えていませんが、今ではデータのないメールが送信されます。

私が見逃しているのは何ですか?

4

1 に答える 1

1

$this->set('BoardroomBooking', $BoardroomBooking);新しいものでは機能しませんCakeEmailComponent

以下を使用する必要があります。

$this->Email->viewVars(compact('BoardroomBooking'));
//or
$this->Email->viewVars(array('BoardroomBooking' => $BoardroomBooking));
于 2013-02-05T14:00:56.927 に答える