2010-01-07 2 views
0

나는 최근에 posted a question about the CakePHP email component를 고민하고, 답변 및 의견의 일부의 도움으로, 내 문제를 해결 할 수 있었다 ...더 CakePHP의 이메일 구성 요소

것은 내 이메일 문제는 또 다른 문제를 밝혀 해결한다! 나는 그와 관련된 클라이언트가있는 계약을 체결 한

:

그래서, 여기 내 문제입니다. 계약서를 작성할 때 클라이언트를 선택합니다. 계약을 데이터베이스에 저장할 때 계약에 대한 링크가있는 전자 메일을 클라이언트에 보내려고합니다. 그러나 계약을 저장하면 이메일이 전송되지 않습니다! 이메일이 작동 중임을 알고 있습니다. 실제로 모든 변수를 하드 코딩하면 모든 것이 작동합니다. 그러나 데이터베이스에서 클라이언트 정보를 동적으로 검색하려고 시도하면 작동하지 않습니다.

getByLastId()와 관련된 솔루션을 보았지만 가장 최근에 추가 된 사용자가 필요하지 않기 때문에이 경우에는 작동하지 않는다고 생각합니다. 첨부 된 사용자가 필요합니다. 이 계약서에.

나는 이것을 잘 설명하고 싶습니다.

여기 제가 생각하는 코드는 ... 자세한 정보가 필요하면 알려주세요. 나는 게시 할 것입니다.

function add() { 
    if (!empty($this->data)) { 
    $this->Contract->create(); 
    if ($this->Contract->save($this->data)) { 
    $this->Session->setFlash(__('The Contract has been saved', true)); 
    $this->_sendContractEmail($this->Contract->User->id); 
    } else { 
    $this->Session->setFlash(__('The Contract could not be saved. Please, try again.', true)); 
    } 
    } 

: 여기

function _sendContractEmail($id) { 
    $this->Email->smtpOptions = array(
    'port'=>'587', 
    'timeout'=>'30', 
    'host'=>'smtp.email.com', 
    'username'=>'username', 
    'password'=>'password' 
    ); 
    $User = $this->Contract->User->read(null,$id); 
    $this->Email->delivery = 'smtp'; 
    $this->Email->to = $User['User']['email']; 
    $this->Email->subject = 'New Contract from Company'; 
    $this->Email->replyTo = '[email protected]'; 
    $this->Email->from = '[email protected]'; 
    $this->Email->template = 'default'; 
    $this->Email->sendAs = 'html'; 
    $this->set('User', $User); 
    $this->Email->send('Test'); 
    $this->set('smtp-errors', $this->Email->smtpError); 
} 

하고 추가() 함수 내 contracts_controller.php의 코드입니다 : 여기

내 이메일 기능을 보내는 내 contracts_controller.php의 코드가있다 어떤 도움이라도 대단히 감사하겠습니다!

감사합니다,

예레미야

+0

이 먼저 눈에 보인다. 당신은 어떤 결과물을 얻습니까? Email :: smtpError의 오류? SMTP 설정에 대한 올바른 로그인 정보가 있습니까? $ this-> Contract-> User-> id가 올바르게 설정 되었습니까? $ User는 어떻게 생겼습니까? –

+0

사실, 필자는 PHP에 비교적 익숙하지 않습니다. $ User가 어떻게 보이는지 어떻게 알 수 있습니까? 나는 debug ($ User)를 사용할 수 있다고 생각한다. 하지만 실제로 어디에 넣을까요? 그리고 저는 $ this-> Contract-> User-> id를 설정해야한다는 것을 알지 못했습니다. 왜냐하면 그것은 매개 변수이기 때문입니다. SMTP가가는 한 모든 것이 완벽하게 작동한다는 것을 알고 있습니다. $ this-> Email-> to = "[email protected]"으로 변경하면 실제로 이메일을 받게됩니다.그것은 내가 $ User [ 'User'] [ 'email']에서 꺼내려고 할 때 작동을 멈 춥니 다. 그래서 문제는 SMTP 설정이 아니라고 생각합니다. – Jeremiah

답변

0

사용 findBy<fieldName>(string $value) ($ this-> Contact-> 사용자 -> findById 메소드 ($ 아이디))

http://book.cakephp.org/view/451/findBy

이 방법은 너무 여러 값을 반환 할 수 있습니다 pr ($ User)을 사용하여 배열 형식을 확인하십시오. $ User [0] [ 'User'] [ 'email']에서 사용자 정보를 찾을 수 있어야합니다.

0

나는이 작동하는지 잘 모르겠어요 때문에 주석으로이를 게시 거라고,하지만 난 아직 의견을 충분한 명성을하지 않아도 : P

는 당신이 봤어? 그것이 작동처럼

var $uses = array('User'); 
$user = $this->User->read(null,$id); 

또는

$user = $this->User->findById($id)