0

ユーザーが自分のメールアドレスと友人のメールアドレスを入力するフォームがあります。電子メールが検証されると、コントローラーは電子メール クラスを使用して友人にメッセージを送信します。ユーザーからのメールを友人に受信してもらいたいのですが、うまくいきません。送信者を「myname@mydomain.com」などの静的なものに設定した場合にのみ、メールを正常に送信できます。これが私のフォームです。

<?php
    echo $this->Form->create('User', array( 'action' => 'invite',
                                    'controller' => 'users')  
                                    );
    echo $this->Form->input('User.from', array('label'=>"Your email",'value'=>'your email','class'=>"",'type'=>'email'));
    echo $this->Form->input('User.to', array('label'=>"Your friend's", 'value'=>"your friend's email",'class'=>"",'type'=>'email'));
    echo $this->Form->end(array('label'=>'Invite', 'class'=>'special-button use-transition')); 
?>

次に、My Users コントローラーがフォームを処理します。アプリから有効なメール アドレスにメール メッセージを送信できるという点で、これは正常に機能します。ただし、$from をユーザーのメール アドレスに設定しようとすると、何も送信されません。ユーザーが入力したメールアドレスからこのメールを送信するにはどうすればよいですか? ユーザーコントローラーの関連セクションは次のとおりです。

// tell app to use Cake Email
App::uses('CakeEmail', 'Network/Email'); 

public function invite(){
    if ($this->request->is('post')) {
        // Get data from the form and send an email
        $to = $this->request->data['User']['to'];
        $from = $this->request->data['User']['from'];
        $subject = "Some text for the subject line";
        $message = "Some text for the message";
        // I use this data to send an email but it won't work unless
        // I change $from to something static like so:
        $from = "myemail@mydomain.com";
        $this->send($to, $from, $subject, $message);
        // redirect on success not shown...
    }
}

// Send function takes the to/from/subject/message and sends it
public function send($to, $from, $subject, $msg) {
    $email = new CakeEmail();
    $email->template('welcome')
          ->emailFormat('html')
          ->from($from)
          ->to($to)
          ->subject($subject);
    if ($email->send($msg)){
        return true;
    }

}
4

1 に答える 1

0

送信者の名前も収集して、fromフィールドに追加することをお勧めします。

したがって、フォームは次のようになります。

<?php
    echo $this->Form->create('User', array( 'action' => 'invite',
                                'controller' => 'users')  
                                );
 echo $this->Form->input('User.fromName', array('label'=>"Your Name", 'value'=>"your name",'class'=>""));
echo $this->Form->input('User.from', array('label'=>"Your email",'value'=>'your email','class'=>"",'type'=>'email'));
echo $this->Form->input('User.to', array('label'=>"Your friend's", 'value'=>"your friend's email",'class'=>"",'type'=>'email'));
echo $this->Form->end(array('label'=>'Invite', 'class'=>'special-button use-transition')); 
?>

そして、招待関数で$formMailを次のようにします。

 $fromMail = array($this->request->data['User']['from'] => $this->request->data['User']['fromName']);

これがうまくいくことを願っています

于 2012-10-09T12:32:49.823 に答える