Codeigniter: почта SMTP не работает

Я пытаюсь создать контактную форму, и я изо всех сил пытаюсь заставить ее работать с конфигурацией SMTP в CI. Однако я успешно попытался с базовым конфигурацией «mail».

Чтобы сократить его, я делаю свои тесты с помощью этого простого кода:

$config = array( 'protocol' => 'smtp', 'smtp_host' => 'smtp.1and1.es', 'smtp_port' => 25, 'smtp_user' => 'user@mysite.com', 'smtp_pass' => '********', 'mailtype' => 'text', 'charset' => 'utf-8', 'wordwrap' => true, 'wrapchars' => 50 ); $this->load->library('email'); $this->email->initialize($config); $this->email->from('my_real_email_address@gmail.com'); $this->email->to('my_real_email_address@gmail.com'); $this->email->reply_to('my_real_email_address@gmail.com', 'John Doe'); $this->email->subject('Message sent from the contact form in website'); $this->email->message('Body of message...'); if ($this->email->send()) { return true; } echo '<!--' . print_r($this->email->print_debugger(), true) . '-->'; return false; 

Я только что спросил у своего хостинг-провайдера, и все настройки SMTP верны. Они также проверили, что моя учетная запись электронной почты работает правильно.

На самом деле, если я выберу:

protocol => 'mail'

сообщение доставлено без проблем. AFAIK функция php mail () также использует SMTP хостинг-провайдера, но просто передает ее серверу и забывает об этом.

Вместо этого я хотел бы использовать аутентификацию SMTP, которая беспокоится об отправке электронной почты. Но только путем изменения

protocol => 'smtp'

когда я отправляю форму, у меня много времени на обработку, и я наконец получаю это сообщение отладки:

 220 smtp.1and1.es (mreu2) Welcome to Nemesis ESMTP server hello: The following SMTP error was encountered: Failed to send AUTH LOGIN command. Error: 421 smtp.1and1.es connection timed out from: The following SMTP error was encountered: to: The following SMTP error was encountered: data: The following SMTP error was encountered: The following SMTP error was encountered: Unable to send email using PHP SMTP. Your server might not be configured to send mail using this method. User-Agent: CodeIgniter Date: Thu, 24 Jan 2013 18:51:31 +0100 From: <my_real_email_address@gmail.com> Return-Path: <my_real_email_address@gmail.com> To: my_real_email_address@gmail.com Reply-To: "John Doe" <my_real_email_address@gmail.com> Subject: =?utf-8?Q?Message_sent_from_the_contact_form_in_website?= X-Sender: my_real_email_address@gmail.com X-Mailer: CodeIgniter X-Priority: 3 (Normal) Message-ID: <510174a33158d@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit Body of message... 

Что может быть причиной этой ошибки?

Этот парень упомянул о проблеме с элементом конфигурации, имеющим одинарные кавычки:

 $config['crlf'] = '\r\n'; //should be "\r\n" $config['newline'] = '\r\n'; //should be "\r\n" 

Я довольно уверен, что protocol => mail не использует вашего провайдера – он отправит письмо прямо с вашего сервера.

Если это не проблема с одной цитатой, это может быть проблема с неправильными учетными данными, брандмауэром или требованием подключения (скажем, если ваш поставщик электронной почты требует TLS / SSL).

Попробуйте подключиться к почтовому серверу и отправить электронное письмо другому клиенту (вы можете использовать telnet: http://www.wikihow.com/Send-Email-Using-Telnet или thunderbird или somesuch), чтобы проверить правильность протоколов.