我正在尝试发送邮件。我想使用Gmail服务器发送,现在我只想让它从发送到同一个帐户发送。
我正在使用YiiMailer扩展,因为它似乎很容易使用,这是我在我的控制器中的操作:
public function actionContact()
{
$model=new ContactForm;
if(isset($_POST['ContactForm']))
{
$model->attributes=$_POST['ContactForm'];
if($model->validate())
{
$name='=?UTF-8?B?'.base64_encode($model->name).'?=';
$subject='=?UTF-8?B?'.base64_encode($model->subject).'?=';
$headers="From: $name <{$model->email}>\r\n".
"Reply-To: {$model->email}\r\n".
"MIME-Version: 1.0\r\n".
"Content-Type: text/plain; charset=UTF-8";
// mail(Yii::app()->params['adminEmail'],$subject,$model->body,$headers);
$mail = new YiiMailer('contact', array(
'message'=>$model->body,
'name'=>$model->name,
'description'=>'Contact form'
));
$mail->setFrom($model->email, $model->name);
$mail->setSubject($model->subject);
$mail->setTo(Yii::app()->params['adminEmail']);
$mail->isSMTP();
$mail->host = "smtp.gmail.com";
$mail->port = 465;
$mail->Username = "username@gmail.com";
$mail->Password = "password";
if($mail->send())
{
Yii::app()->user->setFlash('contact','Gracias por contactarnos, te responderemos tan pronto como podamos.');
$this->refresh();
}
else
{
Yii::app()->user->setFlash('error','Error enviando correo.');
$this->refresh();
}
}
}
$this->render('contact',array('model'=>$model));
}
adminMail与account@gmail.com相同
我不知道我是否有正确的gmail设置,我确定该功能的条件不存在所以它什么都不做。
只是为了确保。这是我的配置:
// autoloading model and component classes
'import'=>array(
'application.models.*',
'application.components.*',
'ext.YiiMailer.YiiMailer'
),
PD:我在帖子周围找到了gmail设置。我不确定他们是否改变了设置。
答案 0 :(得分:2)
尝试使用方法getError()
找出错误是什么(您可以使用特殊的调试选项来获取有关可能错误的更多信息)
$mail->SMTPDebug = 1; //optional
if($mail->send())
{
Yii::app()->user->setFlash('contact','Gracias por contactarnos, te responderemos tan pronto como podamos.');
$this->refresh();
}
else
{
echo '<pre>';
var_dump($mail->getError());
echo '</pre>';
exit;
}
另外,请尝试以下方法:
$mail->SMTPSecure = 'ssl'
;或$mail->SMTPSecure = 'tls';
$mail->SMTPAuth = true;
这个问题让您感兴趣:send email using Gmail SMTP server through PHP Mailer
答案 1 :(得分:0)
这对我有用!
$mail = new YiiMailer();
$mail->IsSMTP(); // Set mailer to use SMTP
$mail->Host = 'smtp.gmail.com'; // Specify main and backup server
$mail->SMTPAuth = true; // Enable SMTP authentication
$mail->Username = 'username'; // SMTP username
$mail->Password = 'password'; // SMTP password
$mail->SMTPSecure = 'tls'; // Enable encryption, 'ssl' also accepted
$mail->Port = 587;
//set mail properties
$mail->setFrom('username@gmail.com', 'YYY');
$mail->setTo($model->to_email);
$mail->setSubject($model->subject);
$mail->setBody($model->message, 'text/html');
$mail->send();
使用Gmail发送电子邮件时,您需要将smtpauth
设置为true
。执行操作后,请检查您的sendMail框!
答案 2 :(得分:0)
我通过安装stunnel解决了这个问题,因此启用了openssl并允许我从服务器发送电子邮件