我在Codeigniter中使用电子邮件类发送电子邮件扔Gmail smtp 这是我的设置:
$this->load->library('email');
$config['protocol'] = 'smtp';
$config['wordwrap'] = TRUE;
$config['smtp_host'] = 'smtp.gmail.com';
$config['smtp_user'] = 'email@gmail.com'; // I write my correct email here
$config['smtp_pass'] = 'xxxxxxxxx'; // I write my correct password here
$config['smtp_port'] = 587;
$config['smtp_crypto'] = "tls";
$config['charset'] = "utf-8";
$config['mailtype'] = "html";
$config['newline'] = "\r\n";
$this->email->initialize($config);
$this->email->from('email@gmail.com', 'My Name');
$this->email->to('another_mail@server.com'); // I write onther email here
$this->email->subject('test gmail smtp');
$this->email->message('success :)');
if (!$this->email->send()) {
echo $this->email->print_debugger();
}
我在我的本地机器上尝试过,代码工作正常,所有电子邮件都已收到。 在我将脚本上传到GoDaddy主机后,它给了我这个警告: -
fsockopen():无法连接到smtp.gmail.com:587 (连接超时)
并通过电子邮件print_debugger();
打印此错误: -
遇到以下SMTP错误:110连接超时 无法使用PHP SMTP发送电子邮件。您的服务器可能不是 配置为使用此方法发送邮件。
我在另一台主机上试过这段代码(Bluehost)它给了我同样的警告和错误。
任何人都知道我哪里出错了?
答案 0 :(得分:1)
端口587被go daddy阻止用于传出smtp连接,根据指定的要求使用以下端口之一。
非SSL - 80,3535,25
SSL - 465
https://www.godaddy.com/help/what-do-i-do-if-i-have-trouble-connecting-to-my-email-account-319
答案 1 :(得分:0)
检查生产服务器上的php.ini文件。
如果php.ini中有;extension=php_openssl.dll
,请将其更改为extension=php_openssl.dll
(删除昏迷,然后重启apache或nginx)。