Я работаю над проектом php codeigniter, и я хочу отправлять электронные письма с моего localhost.
Ниже приведены мои функции контроллера.
$config = Array( 'protocol' => 'smtp', 'smtp_host' => 'ssl://smtp.google.com', 'smtp_port' => 465, 'smtp_user' => 'sender@gmail.com', 'smtp_pass' => 'password' ); $this->load->library('email',$config); $this->email->set_newline("\r\n"); $this->email->from("sender@gmail.com"); $this->email->to("receiver@gmail.com"); $this->email->subject("Email with Codeigniter"); $this->email->message("This is email has been sent with Codeigniter"); if($this->email->send()) { echo "Your email was sent.!"; } else { show_error($this->email->print_debugger()); }
Обратите внимание, что я разрешаю расширение 'extension = php_openssl.dll' в php.ini. Мой файл php.ini находится в C: / AppServ / php5. Когда я запускаю код, моя страница загружается с ошибками.
Это ошибки:
Произошла следующая ошибка SMTP: 1923818231 Не удалось найти перенос сокетов «ssl» – вы забыли включить его при настройке PHP? Не удалось отправить данные: AUTH LOGIN Не удалось отправить команду AUTH LOGIN. Ошибка: не удается отправить данные: ПОЧТА ОТ:
Уровень важности: предупреждение
Сообщение: date (): Нельзя полагаться на настройки часового пояса системы. Вы должны использовать параметр date.timezone или функцию date_default_timezone_set (). Если вы использовали какой-либо из этих методов, и вы все еще получаете это предупреждение, скорее всего, вы ошиблись с идентификатором часового пояса. На данный момент мы выбрали часовой пояс «UTC», но, пожалуйста, установите date.timezone, чтобы выбрать часовой пояс.
Имя файла: libraries / Email.php
Номер строки: 705
Используйте PHPMailer. Его доступно здесь PHPMailer . Вы можете использовать его следующим образом:
public function send_mail() { require_once(APPPATH.'third_party/PHPMailer-master/PHPMailerAutoload.php'); $mail = new PHPMailer(); $mail->IsSMTP(); // we are going to use SMTP $mail->SMTPAuth = true; // enabled SMTP authentication $mail->SMTPSecure = "ssl"; // prefix for secure protocol to connect to the server $mail->Host = "smtp.gmail.com"; // setting GMail as our SMTP server $mail->Port = 465; // SMTP port to connect to GMail $mail->Username = "mail@gmail.com"; // user email address $mail->Password = "password"; // password in GMail $mail->SetFrom('mail@gmail.com', 'Mail'); //Who is sending $mail->isHTML(true); $mail->Subject = "Mail Subject"; $mail->Body = ' <html> <head> <title>Title</title> </head> <body> <h3>Heading</h3> <p>Message Body</p><br> <p>With Regards</p> <p>Your Name</p> </body> </html> '; $destino = receiver@gmail.com; // Who is addressed the email to $mail->AddAddress($destino, "Receiver"); if(!$mail->Send()) { return false; } else { return true; } }
Не забудьте установить доступ к менее доверенным приложениям в своей учетной записи gmail.
В вашем $config
массиве попробуйте это вместо:
'smtp_host' => 'ssl://smtp.googlemail.com',