CakePHP2での「CakeEmail」の使い方で分からないことがあります。

http://d.hatena.ne.jp/y_guriko/touch/searchdiary?word=*%5BCakePHP2.1%5D
このサイトを参考にし、app/Config/email.phpの箇所だけを
public $contact = array(
'transport' => 'Smtp',
'from' => array('hoge@gmail.com'(送信先のメルアド) => 'メールでの表示名'),
'host' => 'ssl://smtp.gmail.com',
'port' => 465,
'timeout' => 30,
'username' => 'hoge'(gmailのアカウント名),
'password' => '111111'(gmailのログインパスワード),
'log' => true
);
に変更しました

送信フォームに入力し、送信ボタンを押すと
「You need specify one destination on to, cc or bcc.
Error: An Internal Error Has Occurred.」
とエラーが出されます。ここで詰まってしまいました・・・。
CakeEmailについて、いくら検索しましても分かりやすい解説が見つかりませんでした。
もし、CakeEmailについて詳しい方がいらっしゃいましたら手を貸してくださいませんか?

回答の条件
  • 1人10回まで
  • 登録:
  • 終了:2012/04/22 03:05:03
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答0件)

回答はまだありません

  • id:rouge_2008
    宛先の設定をどこにしたのでしょうか?
    エラーメッセージを機械翻訳でいいので、翻訳して確認してみてください。

    使い方は以下のページが参考になりそうです。
    ほぼ同じですが、複数のページを比較しながら確認してみてください。
    http://rzpg.blogspot.com/2011/12/cakephp20cakeemail.html
    http://www.b-prep.com/blog/?p=1293
    http://d.hatena.ne.jp/lesamoureuses/20111106/1320584340
    http://lab.tenfrontier.com/?p=252
  • id:kyouryukun
    コメントありがとうございます。
    エラーを翻訳しましたら
    「あなたは、CCまたはBCCの​​1つの宛先を指定する必要があります。」
    という意味らしいです。
    app/Config/email.php内の
    class EmailConfig {

    public $gmail = array(
    'host' => 'ssl://smtp.gmail.com',
    'port' => 465,
    'username' => '自分のgmailアカウント',
    'password' => 'パスワード'
    );
    }

    ここで宛先を設定していますが、違うのでしょうか?
  • id:rouge_2008
    「'to' => '宛先のメールアドレス',」を省略しているのでしょうか?

    上記でコメントした「http://lab.tenfrontier.com/?p=252」にもある通り、EmailConfig(email.php)で指定しても、$email->to('宛先メールアドレス')」(※$email = new CakeEmail('gmail');」した場合)で指定しても、どちらでも大丈夫なはずです。

    -----------------------------------------------------
    次に
    ->to( 'to_mailaddress@localhost' )

    この部分ですが送信相手先のメールアドレスを指定しています。
    EmailConfig内の「to」要素に直接指定しても構いませんが今回は「会員登録完了時に送るメール」
    という例で進めているのでこうしています。
    -----------------------------------------------------
  • id:kyouryukun
    public $gmail = array(

    'transport' => 'Mail',
    'from' => '111222@gmail.com', // (実験のため送信先と同じ)
    'to' => null, // どのメールアドレスに送るか
    'subject' => '会員登録完了', // メールの件名
    'sendAs' => 'text', // メールの形式(textメールかhtmlメールか)
    'template' => 'regist' // 利用するテンプレート名(手順2と3で解説)

    );
    PagesController.phpに
    public function regcomp()
    {
    $vars = array(
    'account' => 'test',
    'mailaddress' => '111222@gmail.com'
    );

    $email_instance = new CakeEmail();
    $email_instance->config('gmail')
    ->to( '111222@gmail.com' )//送信先のメルアド
    ->viewVars( $vars )
    ->send();
    }
    app/View/Pages/regcomp.ctpに送信フォーム
    <?php
    echo $this->Form->create('Contact');
    echo $this->Form->input('name');
    echo $this->Form->input('email');
    echo $this->Form->input('tel');
    echo $this->Form->input('body');
    echo $this->Form->end('送信');
    ?>
    を書きました。
    送信フォームに自身のメルアドを書いて送信ボタンを押しましても、
    指定したメルアドにメールが送られてくる気配が全くありません。

    自身の考えでは、サイトの問い合わせフォームにこの機能を使いたいと思っています。これを使えば可能ですよね?
    初歩的な質問ですいません。
  • id:rouge_2008
    どのような環境で試しているのでしょうか?
    PHPのmail()で外部にメール送信できていますか?(※CakePHPを利用しない場合)
    ローカルで試していて、mail()で外部にメールを送信できない場合は、CakePHP(CakeEmail)でも送信できないはずです。
    transport、host等に関しては、元のGmailのSMTPサーバを利用する設定に戻してみてください。
    ※sendAsは指定していても送信されますが、一覧に載っていませんので不要かもしれません。(変更になったのかどうかは知りませんが、必要な場合はemailFormatで指定するようです。)
    http://book.cakephp.org/2.0/en/core-utility-libraries/email.html

    それから、openssl拡張を使用しますので、phpinfo()で確認して、有効になっていない場合は、有効にしてください。

    上記の事が問題ないのに送信されない場合、ブラウザのキャッシュを削除してから試してみてください。


    > 自身の考えでは、サイトの問い合わせフォームにこの機能を使いたいと思っています。これを使えば可能ですよね?

    可能ですが、送信フォーム用に別のメソッドを作成して、アクションにregcompを指定しないと、今の状態ではフォームにアクセスしただけでメールが送信されてしまいます。
    ただし、動作テストとして、メールの送信が確認されるまでは今のままでも構わないと思います。
  • id:kyouryukun
    細かいアドバイスまでありがとうございます。
    う〜ん、CakeEmailを使って問い合わせフォームを作成している人は少なく感じます。
    検索しましても、詳細な情報があまり出てこないので・・・。
    みなさんは、どうやって問い合わせフォームを作成してるんだろ?
  • id:tdoi
    CakeEmailを使って問い合わせフォームを作成している人を何故少ないと感じるか知りませんが、お問い合わせフォームとか、そういう次元じゃなく、rouge_2008さんがおっしゃっているようにメール送れるかどうか確認してはどうです?
  • id:kyouryukun
    そんなことで悩むより、さくらサーバー上でメールが送信できるか試してみます。
  • id:kyouryukun
    なんとか、メールを送信することができました。
    お二人ともありがとうございました!

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません