<?php
class Email extends Controller {
function Email()
{
parent::Controller();
$this->load->library('email');
}
function index()
{
$config['protocol'] = 'smtp';
$config['smtp_host'] = 'ssl://smtp.gmail.com';
$config['smtp_port'] = '465';
$config['smtp_timeout'] = '7';
$config['smtp_user'] = 'mygmail@gmail.com';
$config['smtp_pass'] = '*******';
$config['charset'] = 'utf-8';
$config['newline'] = "\r\n";
$config['mailtype'] = 'text'; // or html
$config['validation'] = TRUE; // bool whether to validate email or not
$this->email->initialize($config);
$this->email->from('mygmail@gmail.com', 'myname');
$this->email->to('target@gmail.com');
$this->email->subject('Email Test');
$this->email->message('Testing the email class.');
$this->email->send();
echo $this->email->print_debugger();
$this->load->view('email_view');
}
}
Я получаю эту ошибку:
A PHP Error was encountered
Severity: Warning
Message: fsockopen() [function.fsockopen]: unable to connect to ssl://smtp.gmail.com:465 (Connection timed out)
Filename: libraries/Email.php
Line Number: 1641
С помощью PORT 25/587
У меня такая ошибка:
A PHP Error was encountered
Severity: Warning
Message: fsockopen() [function.fsockopen]: SSL operation failed with code 1. OpenSSL Error messages: error:140770FC:SSL routines:func(119):reason(252)
Filename: libraries/Email.php
Line Number: 1641
Я не хочу сейчас использовать phpmailer. (На самом деле я пытался использовать phpmailer, но мне это не удалось).
Как мне решить эту проблему, ребята?
php
codeigniter
email
smtp
Шив
источник
источник
$config['validation'] = TRUE
неверно, ключ индекса проверен, поэтому используйте$config['validate'] = TRUE
Ответы:
$config = Array( 'protocol' => 'smtp', 'smtp_host' => 'ssl://smtp.googlemail.com', 'smtp_port' => 465, 'smtp_user' => 'xxx', 'smtp_pass' => 'xxx', 'mailtype' => 'html', 'charset' => 'iso-8859-1' ); $this->load->library('email', $config); $this->email->set_newline("\r\n"); // Set to, from, message, etc. $result = $this->email->send();
С форумов CodeIgniter
источник
$this->email->set_newline
заключены в двойные кавычки. это очень важно, иначе это не сработает.\n
означает новую строку, только если она заключена в двойные кавычки. В одинарных кавычках это означает буквальные символы \ n.$result = $this->email->send();
Вам необходимо включить SSL в конфигурации PHP. Загрузите
php.ini
и найдите строку со следующим:;extension=php_openssl.dll
Раскомментируйте это. : D
(убрав точку с запятой из оператора)
extension=php_openssl.dll
источник
Согласно документам CI ( электронная библиотека CodeIgniter ) ...
Мне удалось заставить это работать, поместив все настройки в application / config / email.php .
$config['useragent'] = 'CodeIgniter'; $config['protocol'] = 'smtp'; //$config['mailpath'] = '/usr/sbin/sendmail'; $config['smtp_host'] = 'ssl://smtp.googlemail.com'; $config['smtp_user'] = 'YOUREMAILHERE@gmail.com'; $config['smtp_pass'] = 'YOURPASSWORDHERE'; $config['smtp_port'] = 465; $config['smtp_timeout'] = 5; $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;
Затем в одном из методов контроллера у меня есть что-то вроде:
$this->load->library('email'); // Note: no $config param needed $this->email->from('YOUREMAILHERE@gmail.com', 'YOUREMAILHERE@gmail.com'); $this->email->to('SOMEEMAILHERE@gmail.com'); $this->email->subject('Test email from CI and Gmail'); $this->email->message('This is a test.'); $this->email->send();
Также, как писал Cerebro, мне пришлось раскомментировать эту строку в моем файле php.ini и перезапустить PHP:
источник
Измените его на следующее:
$ci = get_instance(); $ci->load->library('email'); $config['protocol'] = "smtp"; $config['smtp_host'] = "ssl://smtp.gmail.com"; $config['smtp_port'] = "465"; $config['smtp_user'] = "blablabla@gmail.com"; $config['smtp_pass'] = "yourpassword"; $config['charset'] = "utf-8"; $config['mailtype'] = "html"; $config['newline'] = "\r\n"; $ci->email->initialize($config); $ci->email->from('blablabla@gmail.com', 'Blabla'); $list = array('xxx@gmail.com'); $ci->email->to($list); $this->email->reply_to('my-email@gmail.com', 'Explendid Videos'); $ci->email->subject('This is an email test'); $ci->email->message('It is working. Great!'); $ci->email->send();
источник
отправить электронное письмо html через codeiginater
$this->load->library('email'); $this->load->library('parser'); $this->email->clear(); $config['mailtype'] = "html"; $this->email->initialize($config); $this->email->set_newline("\r\n"); $this->email->from('email@example.com', 'Website'); $list = array('xxxxxxxx@archmage.lk', 'xxxxx@gmail.com'); $this->email->to($list); $data = array(); $htmlMessage = $this->parser->parse('messages/email', $data, true); $this->email->subject('This is an email test'); $this->email->message($htmlMessage); if ($this->email->send()) { echo 'Your email was sent, thanks chamil.'; } else { show_error($this->email->print_debugger()); }
источник
Другой вариант, который у меня есть, на сервере Linux с Postfix:
Во- первых, конфигурация CI электронной почты , чтобы использовать систему электронной почты вашего сервера: например, в
email.php
, например ,# alias to postfix in a typical Postfix server $config['protocol'] = 'sendmail'; $config['mailpath'] = '/usr/sbin/sendmail';
Затем настройте свой постфикс для пересылки почты в Google (возможно, в зависимости от адреса отправителя). Вероятно, вам нужно будет указать настройки пароля пользователя в
/etc/postfix/sasl_passwd
(документы)Это намного проще (и менее фрагментарно), если у вас есть Linux-сервер, уже настроенный для отправки некоторых / всех своих исходящих писем в Google.
источник
Возможно, ваш хостинг-сервер и почтовый сервер находятся в одном месте, и вам не нужно проходить SMTP-аутентификацию. Просто оставьте все по умолчанию, например:
$config = array( 'protocol' => '', 'smtp_host' => '', 'smtp_port' => '', 'smtp_user' => 'yourname@gmail.com', 'smtp_pass' => '**********' );
или же
$config['protocol'] = ''; $config['smtp_host'] = ''; $config['smtp_port'] = ; $config['smtp_user'] = 'yourname@gmail.com'; $config['smtp_pass'] = 'password';
меня устраивает.
источник
Это может быть так:
Ошибка при отправке электронного письма с помощью CodeIgniter
источник