CakePHP发送电子邮件
我在使用CakePHP发送邮件时遇到问题。一切都很顺利,但我没有收到任何一封邮件,我很想发送两封不同的邮件 //WebsitesController.phpCakePHP发送电子邮件,php,email,cakephp,Php,Email,Cakephp,我在使用CakePHP发送邮件时遇到问题。一切都很顺利,但我没有收到任何一封邮件,我很想发送两封不同的邮件 //WebsitesController.php App::uses('AppController','Controller'); App::uses('CakeEmail','Network/Email'); class WebsitesController extends AppController { public $helpers = array('Html','Form'
App::uses('AppController','Controller');
App::uses('CakeEmail','Network/Email');
class WebsitesController extends AppController
{
public $helpers = array('Html','Form','Session');
public $components = array('Email','Session');
public function contact()
{
$this->set('dane', $this->Website->findById(4));
}
public function contact_email()
{ /* all data is taken from contact.ctp, I debuged all data below and it's correct */
$useremail = $this->data['Website']['useremail'];
$usertopic = $this->data['Website']['usertopic'];
$usermessage = $this->data['Website']['usermessage'];
$Email = new CakeEmail();
$Email->from(array($useremail => ' My Site'));
$Email->to('wigan@mail.com');
$Email->subject($usertopic); // all data is correct i checked several times
$Email->send($usermessage);
if($Email->send($usermessage))
{
$this->Session->setFlash('Mail sent','default',array('class'=>'alert alert-success'));
return $this->redirect(array('controller'=>'websites','action'=>'contact'));
}
$this->Session->setFlash('Problem during sending email','default',array('class'=>'alert alert-warning'));
}
}
//contact.ctp
<fieldset>
<?php
echo $this->Form->create('Website',array('controller'=>'websites','action'=>'contact_email'));
echo $this->Form->input('useremail',array('class'=>'form-control'));
echo $this->Form->input('usertopic',array('class'=>'form-control'));
echo $this->Form->input('usermessage',array('class'=>'form-control'));
echo $this->Form->submit('Send',array('class'=>'btn btn-default'));
echo $this->Form->end();
?>
</fieldset>
试试这个,你没有设置配置
public function contact_email()
{ /* all data is taken from contact.ctp, I debuged all data below and it's correct */
$useremail = $this->data['Website']['useremail'];
$usertopic = $this->data['Website']['usertopic'];
$usermessage = $this->data['Website']['usermessage'];
$Email = new CakeEmail();
$Email->config('smtp')
->emailFormat('html')
->from($useremail)
->to('wigan@mail.com')
->subject($usertopic); // all data is correct i checked several times
if($Email->send($usermessage))
{
$this->Session->setFlash('Mail sent','default',array('class'=>'alert alert-success'));
return $this->redirect(array('controller'=>'websites','action'=>'contact'));
} else {
$this->Session->setFlash('Problem during sending email','default',array('class'=>'alert alert-warning'));
}
}
请按照以下步骤操作: 步骤1:在这个文件(app\Config\email.php)中 添加以下内容:
public $gmail = array(
'transport' => 'Smtp',
'from' => array('site@localhost' => 'Any Text...'),
'host' => 'ssl://smtp.gmail.com',
'port' => 465,
'timeout' => 30,
'username' => 'youremail@example.com',
'password' => 'yourPassword',
'client' => null,
'log' => false,
//'charset' => 'utf-8',
//'headerCharset' => 'utf-8',
);
步骤2:添加电子邮件模板(app\View\Emails\html\sample.ctp)
您是否收到“已发送邮件”消息或“发送邮件时出现问题”消息?您的服务器是否配置为发送电子邮件?你检查过你的垃圾邮件文件夹吗?我每次都收到“邮件已发送”通知,我检查过多次垃圾邮件,但都没有发现任何内容。我的配置在帖子的底部,我看不到类似
$Email->config('smtp')
告诉cake使用该配置数组。该conf文件位于app/config/email.php中,我认为没有必要指出该文件否,但它可以包含许多配置数组,因此您必须告诉cake要使用哪个数组
public $gmail = array(
'transport' => 'Smtp',
'from' => array('site@localhost' => 'Any Text...'),
'host' => 'ssl://smtp.gmail.com',
'port' => 465,
'timeout' => 30,
'username' => 'youremail@example.com',
'password' => 'yourPassword',
'client' => null,
'log' => false,
//'charset' => 'utf-8',
//'headerCharset' => 'utf-8',
);
<body>
<h1>Email Testing: <?php echo $first_name?></h1>
</body>
public function send_my_email() {
App::uses('CakeEmail', 'Network/Email');
$Email = new CakeEmail();
$Email->config('gmail'); //configuration
$Email->emailFormat('html'); //email format
$Email->to('receiveremail@ex.com');
$Email->subject('Testing the emails');
$Email->template('sample');//created in above step
$Email->viewVars(array('first_name'=>'John Doe' ));//variable will be replaced from template
if ($Email->send('Hi did you receive the mail')) {
$this->Flash->success(__('Email successfully send on receiveremail@ex.com'));
} else {
$this->Flash->error(__('Could not send the mail. Please try again'));
}
}