Я пытаюсь создать контактную форму, и я изо всех сил пытаюсь заставить ее работать с конфигурацией 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), чтобы проверить правильность протоколов.