我尝试了几天使用gmail从本地服务器发送电子邮件的许多方法..我曾经使用yii扩展程序,但过了一段时间,它无法正常工作,我试图添加整个PHPMailer并使用正确的方式。
这是我的代码:
static function gmail($email)
{
$mail = new phpmailer();
$mail->IsSMTP();
$mail->Host = "smtp.gmail.com";
$mail->SMTPAuth = true;
$mail->SMTPSecure = "tls";
$mail->Port = 587;
$mail->Username = "mail@gmail.com";
$mail->Password = "password"; //best to keep this in your config file
$mail->Subject = 'subject';
$mail->Body = 'message';
$mail->addAddress($email);
$mail->send();
}
我从Github下载了PHPMailer库并将所有内容解压缩到components文件夹。 我添加到配置文件的方式是这样的:
'import'=>array(
'application.models.*',
'application.components.*',
'application.components.PHPMailer.*'
),
第一次尝试时我收到此错误include(phpmailer.php): failed to open stream: No such file or directory
更新:我忘了说,我这样访问此函数的方式是Mailer::gmail('$this->email');
,其中Mailer.php具有gmail功能。
答案 0 :(得分:0)
仔细检查你的php.ini文件以确保phpmailer位于include_path中,因为除了基于你提供的代码之外,一切看起来都不错。
(很抱歉,我会在评论中加入此内容,但我仍然无法发表评论。)
答案 1 :(得分:0)
我不太确定,我使用的是几个月的Yiis phpmailer扩展程序,它总能很好地工作。
然而,尝试使用Github的东西:
require_once <PATH TO PHPMAILER> . 'class.phpmailer.php';
$mail = new PHPMailer();
[...] Rest of your code here
替换为class.phpmailer.php
答案 2 :(得分:0)
我能够通过检查gmail历史记录安全性来发送邮件,它显示有人试图通过无效授权访问我的帐户,我最后使用YiiMailer,它有点混淆gmail。
代码是这样的:
$mail = new YiiMailer();
//$mail->clearLayout();//if layout is already set in config
$mail->IsSMTP(); // enable SMTP
$mail->SMTPDebug = 1; // debugging: 1 = errors and messages, 2 = messages only
$mail->SMTPAuth = true; // authentication enabled
$mail->SMTPSecure = 'ssl'; // secure transfer enabled REQUIRED for GMail
$mail->Host = "smtp.gmail.com";
$mail->Port = 465; // or 587
$mail->IsHTML(true);
$mail->Username = "account@gmail.com";
$mail->Password = "password";
$mail->setFrom('no-reply@strandedgrounds.sr', 'Stranded Grounds');
$mail->setSubject('Recuperacion de contraseña');
$mail->AddAddress("mail@hotmail.com");
$mail->send();