我正在尝试使用Gmail SMTP服务器从我使用CodeIgniter构建的应用程序发送电子邮件,但没有运气。我使用我的Gmail帐户作为用户,但我在这里更改配置是为了保密。我使用下面的代码
$config['protocol'] = 'smtp';
$config['smtp_host'] = 'ssl://smtp.gmail.com';
$config['smtp_port'] = 465;
$config['smtp_user'] = 'myemail@gmail.com';
$config['smtp_pass'] = 'mypassword';
$config['mailtype'] = 'html';
//load email library
$this->load->library('email', $config);
$this->email->set_newline("\r\n");
$message = "Please validate your registration using this link: $link.";
$this->email->to($email);
$this->email->from('myemail@gmail.com', 'John Doe');
$this->email->subject('Validate Your Registration');
$this->email->message($message);
if($this->email->send())
{
$this->session->sess_destroy();
redirect(base_url()."thanks/indi/$id");
}
else
{
show_error($this->email->print_debugger());
}
以下是每次出现的2条错误消息:
遇到PHP错误
严重性:警告
消息:mail():无法连接到mailserver “ssl://smtp.googlemail.com”端口465,验证您的“SMTP”和 php.ini中的“smtp_port”设置或使用ini_set()
文件名:libraries / Email.php
行号:1553
遇到错误
无法使用PHP mail()发送电子邮件。您的服务器可能不是 配置为使用此方法发送邮件。
来自:“John Doe”回程路径: 回复:“myemail@gmail.com”X-Sender: myemail@gmail.com X-Mailer:CodeIgniter X-Priority:3(正常) 消息ID:< 52333cd2aa4fb@gmail.com> Mime版本:1.0内容类型: 文本/无格式; charset = utf-8 Content-Transfer-Encoding:8bit =?utf-8?Q?Validate_Your_Registration?=请使用以下链接验证您的注册: http://mywebsite.com/registration/index.php/validate/32/1afa34a7f984eeabdbb0a7d494132ee5
我尝试 587 作为端口, ssl://smtp.googlemail.com 作为主机,尝试使用不同的组合来尝试它是否有效。我尝试了通常的数组构造函数来声明配置数组(例如$ config = array('protocol'=>'smtp',...)/ $ config = Array('protocol'=>'smtp', ......))。我甚至尝试将端口放在单引号内,并在配置中添加了一个smtp_timeout。
另外,我根据此页面的内容设置了我的php.ini:http://adisembiring.wordpress.com/2010/01/17/sending-gmail-email-using-codeigniter/ extension = php_openssl.dll 已取消注释,但我找不到这一行: extension = php_smtp.dll ,这在上面的网站中提到过,所以我只是设置了< strong> [邮件功能] 部分到这样的
[mail function]
; For Win32 only.
; http://php.net/smtp
SMTP = ssl://smtp.gmail.com
; http://php.net/smtp-port
smtp_port = 465
我该怎么做才能让这个工作?关于我缺少什么的什么想法?谢谢。任何帮助表示赞赏:)
答案 0 :(得分:0)
尝试将此添加到您的$config
数组:
$config['starttls'] = TRUE;
答案 1 :(得分:0)
如果您使用的是两步验证,是否生成了应用专用密码?
答案 2 :(得分:0)
将$ config数组更改为以下
$config['smtp_host'] = 'ssl://smtp.googlemail.com';