2013-05-26 2 views
0

Когда я пытаюсь отправить электронные письма с localhost, все работает нормально. Но когда я загрузил свое приложение на сервер, функция электронной почты больше не работает! Я использую аккаунт Gmail.Электронная почта отправлена ​​в localhost, но не на сервере

Вот мой config/email.php файл:

$config['useragent']  = 'CodeIgniter';   
$config['protocol']   = 'smtp';   
$config['mailpath']   = '/usr/sbin/sendmail'; 
$config['smtp_host']  = 'ssl://smtp.googlemail.com'; 
$config['smtp_user']  = '[email protected]'; 
$config['smtp_pass']  = 'my_password'; 
$config['smtp_port']  = 465; 
$config['smtp_timeout']  = 80; 
$config['wordwrap']   = TRUE; 
$config['wrapchars']  = 76; 
$config['mailtype']   = 'html'; 
$config['charset']   = 'utf-8'; 
$config['validate']   = FALSE; 
$config['priority']   = 3; 
$config['crlf']    = "\r\n"; 
$config['newline']   = "\r\n"; 
$config['bcc_batch_mode'] = FALSE; 
$config['bcc_batch_size'] = 200; 


$config['sender_name']  = 'Name'; 
$config['from_email']  = '[email protected]'; 
$config['to_email']  = '[email protected]'; 
$config['email_subject']  = 'Email Subject'; 

И это, как я послал письмо в мой контроллер:

$this->load->library('email'); 
$this->email->from($this->config->item('from_email'), $this->config->item('sender_name')); 
$this->email->to($this->config->item('to_email')); 
$this->email->subject($this->config->item('email_subject')); 
$this->email->message($string); 

if (!$this->email->send()) 
{ 
    $data['success'] = FALSE;   
} 
else 
{ 
    $data['success'] = TRUE;    
} 
$this->_example_output('layouts/sendemail_confirm.php', $data); 

И это ошибка я получаю:

Возникла ошибка PHP.

Серьезность: Предупреждение

Сообщение: fsockopen() [function.fsockopen]: не удалось подключиться к SSL: //smtp.googlemail.com: 465 (отказ в соединении)

Имя файла: библиотеки/email.php

Порядковый номер: 1689

PHP-ошибка была обнаружена

Серьезность: Предупреждение

Сообщение: FWRITE() ожидает параметр 1, чтобы быть ресурсом, логический данный

Имя файла: библиотеки/email.php

Порядковый номер: 1846

PHP-ошибка была обнаружена

Серьезность: Предупреждение

сообщение: fgets() ожидает параметр 1, чтобы быть ресурсом, булевы данные

Имя файла: библиотеки/email.php

Порядковый номер: 1869

ответ

1

Попробуйте использовать SMTP хост, как "smtp.gmail.com" $ конфиг [ 'smtp_host'] = 'smtp.gmail.com';

+0

Пробовал это. Не работает! – iTurki

1

Сообщение: fsockopen() [function.fsockopen]: не удалось подключиться к SSL: //smtp.googlemail.com: 465 (отказ в соединении)

Вполне возможно, что IP-адрес вашего сервера занесенный в черный список Google из-за предыдущих попыток спама ... Это общедоступная учетная запись? Облачная учетная запись? И т.д? Все это подозрительно для таких вещей.

Возможно, также существует неправильное сопоставление поиска DNS с доменным именем и адресом, либо DNS-сервер домена может иметь параметры политики SPF, которые не позволяют Google принимать почту или проблему с конвертом с именем хоста, или используя 127.0.0.1 в качестве исходного адреса.

Также проверьте свой php.чтобы убедиться, что вы используете/или не используете sendmail_from= и mail.add_x_header= одинаково в обеих системах.

0

Используйте параметры этой конфигурации

$config['protocol'] = 'smtp'; 
    $config['mail_path'] = 'ssl://smtp.googlemail.com'; 
    $config['smtp_host'] = 'ssl://smtp.googlemail.com'; 
    $config['smtp_port'] = 465; 

И добавьте эту строку, после загрузки библиотеки электронной

$this->load->library('email', $config); 
$this->email->set_newline("\r\n"); 
+0

Пробовал. Не работает. – iTurki

+0

@iturki, такая же ошибка? – sakibmoon

+0

Yub, такая же ошибка .. – iTurki

0
$config = Array(
     'protocol' => 'mail', 
     'smtp_host' => 'ssl://smtp.googlemail.com', 
     'smtp_port' => 465, 
     'smtp_user' => '[email protected]', // change it to yours 
     'smtp_pass' => '[email protected]', // change it to yours 
     'mailtype' => 'html', 
     'charset' => 'iso-8859-1', 
     'wordwrap' => TRUE 
    ); 

    $this->load->library('email', $config); 
    $this->email->set_newline("\r\n"); 
    $this->email->from($from); // change it to yours 
    $this->email->to($to);// change it to yours 
    $this->email->subject($subject); 
    $this->email->message($message); 
    $this->email->send(); 
+1

Не могли бы вы объяснить, что делает ваше решение. Это не очень полезно. –

Смежные вопросы