簡體   English   中英

無法通過Gmail SMTP在CodeIgniter中發送電子郵件

[英]Trouble sending email in CodeIgniter via Gmail SMTP

我正在嘗試使用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():無法通過“ ssl://smtp.googlemail.com”端口465連接到郵件服務器,無法驗證php.ini中的“ SMTP”和“ smtp_port”設置或使用ini_set()

文件名:libraries / Email.php

行號:1553

遇到錯誤

無法使用PHP mail()發送電子郵件。 您的服務器可能未配置為使用此方法發送郵件。

來自:“ John Doe”返回路徑:答復:“ myemail@gmail.com” X-發件人:myemail@gmail.com X-Mailer:CodeIgniter X-優先級:3(普通)郵件ID:<52333cd2aa4fb @ gmail.com> Mime版本:1.0內容類型:文本/純文本; charset = utf-8內容傳輸編碼: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 ,在上面的網站中已經提到過,因此我只將[mail function]部分設置為這樣

[mail function]
; For Win32 only.
; http://php.net/smtp
SMTP = ssl://smtp.gmail.com
; http://php.net/smtp-port
smtp_port = 465

我應該怎么做才能使它正常工作? 對我缺少的地方有什么想法嗎? 謝謝。 任何幫助表示贊賞:)

嘗試將其添加到$config數組中:

$config['starttls'] = TRUE;

如果您使用兩步驗證,是否已生成應用程序專用密碼?

如下更改$ config數組

$config['smtp_host']  = 'ssl://smtp.googlemail.com';

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM