2016-07-05 194 views
2
$config = array(
    'protocol' => 'smtp', 
    'smtp_host' => 'ssl://smtp.gmail.com', 
    'smtp_port' => '465', 
    'smtp_user' => "[email protected]", 
    'smtp_pass' => "xxxxxxx", // change it to yours 
    'mailtype' => 'html', 
    'charset' => 'utf8' 
); 

$this->load->library('email',$config); 

$this->email->set_newline("\r\n"); 
$this->email->set_crlf("\r\n"); 

$this->email->from($config['smtp_user']); 
$this->email->to($email['user_email']);   
$this->email->subject($row['tplsubject']); 
$this->email->message(html_entity_decode($email_subject)); 
$this->email->send(); 

此代碼不能正常工作的示值誤差的fsockopen():無法連接到SSL://smtp.gmail.com:465

遇到

一個PHP錯誤

嚴重性:警告

消息:的fsockopen():無法連接到SSL://smtp.gmail.com:465 (找不到插座運輸 「SSL」 - 你忘記啓用 它,當你配置PHP?)

文件名:庫/ Email.php

行號:1689

+2

PROTIP:不要在問題中包含* real *密碼。 –

+0

我只是需要這個測試,所以我從'ssl://smtp.gmail.com'中刪除了'ssl://'並且能夠繼續測試。 – busycoding

回答

4

這不是一個笨問題,而是一個PHP設置相關的問題。這個問題的答案可以在這裏找到:Unable to find the socket transport "ssl" - did you forget to enable it when you configured PHP?

有一點需要注意的是,在codeigniter中,您可以使用電子郵件配置文件來保存所有的配置設置。 (所以你不必每次都在控制器中定義它們)。您可以通過創建文件做到這一點:application/config/email.php可以然後填寫該文件,您的設置,像這樣:

<?php defined('BASEPATH') OR exit('No direct script access allowed'); 

$config = array(
    'protocol' => 'smtp', // 'mail', 'sendmail', or 'smtp' 
    'smtp_host' => 'your_host', 
    'smtp_port' => your_port, 
    'smtp_user' => 'your_email', 
    'smtp_pass' => 'your_password', 
    'smtp_crypto' => 'security', //can be 'ssl' or 'tls' for example 
    'mailtype' => 'html', //plaintext 'text' mails or 'html' 
    'smtp_timeout' => '4', //in seconds 
    'charset' => 'iso-8859-1', 
    'wordwrap' => TRUE 
); 
每次

您加載庫($this->load->library('email');)這些設置會被自動加載。

此外,我建議您立即更改您的電子郵件密碼因爲您在您的問題中編寫了憑據。

+0

謝謝Mr.Raocket Hazmat –