Я использую библиотеку Tank Auth для CodeIgniter.Когда пользователь регистрируется, система отправляет ему электронное письмо с активацией.Это работает правильно на моей локальной установке, но на действующем сервере электронная почта не отправляется (или, по крайней мере, она никогда не приходит).Электронные письма, которые автоматически отправляются из других мест - контроллеров, которые я пишу, - используя класс электронной почты CodeIgniter, доставляются как положено.
Например, этот код в одном из моих контроллеров работает правильно локально и на работающем сервере:
$message = $this->load->view( 'email/email', $this->data, true );
$this->email->clear ();
$this->email->to ( $send_to );
$this->email->reply_to ( $reply_to );
$this->email->from ( $from );
$this->email->subject ( $subject );
$this->email->message ( $message );
$this->email->send ();
Этот код в Tank Auth отправляет сообщение электронной почты о моей локальной установке, но не удается сделать это на живом сервере:
$this->load->library ( 'email' );
$this->email->from ( $this->config->item( 'from_email' ), $this->config->item( 'site_title' ) );
$this->email->reply_to ( $this->config->item( 'reply_email' ), $this->config->item( 'site_title' ) );
$this->email->to ( $email );
$this->email->subject ( sprintf( $this->lang->line( 'auth_subject_' . $type ), $this->config->item( 'site_title' ) ) );
$this->email->message ( $this->load->view( 'email/' . $type . '-html', $data, TRUE ) );
$this->email->send ();
Однако, похоже, система думаетон отправляет электронное письмо:
Your message has been successfully sent using the following protocol: mail
User-Agent: CodeIgniter
Date: Thu, 20 Oct 2011 12:30:28 -0400
From: "[redacted]"
Return-Path:
Reply-To: "[redacted]"
X-Sender: [redacted]
X-Mailer: CodeIgniter
X-Priority: 3 (Normal)
Message-ID: <4ea04ca449b0d@[redacted]>
Mime-Version: 1.0
Content-Type: multipart/alternative; boundary="B_ALT_4ea04ca449ef3"
[message content]
Замена почтового содержимого CodeIgniter на следующие компоненты работает везде:
$hash = md5(time());
$mime_boundary = "==Multipart_Boundary_x".$hash."x";
$headers = "From: $email->from \n" .
"Reply-To: $email->reply_to \n" .
"MIME-Version: 1.0 \n" .
"Content-Type: multipart/mixed; \n" .
" boundary=\"{$mime_boundary}\"";
$body = "This is a multi-part message in MIME format.\n\n" .
"--{$mime_boundary}\n" .
"Content-Type:text/html; charset=\"utf-8\"\n" .
"Content-Transfer-Encoding: 8bit\n\n".$email->message."\n\n";
mail( $email->to, $email->subject, $body, $headers );
Итак, очевидно, у меня есть жизнеспособный обходной путь, но я бы оченьхотелось бы узнать, что вызывает такую конкретную неудачу как для моего будущего я, так и для других, которые могут столкнуться с той же проблемой.
Я нашел этот вопрос, который, кажется, примерно такой же илисвязанная с этим проблема , но ответа нет.
ОБНОВЛЕНИЕ: Мой хост обнаружил следующую ошибку, связанную с этой проблемой:
Oct 20 17:16:25 host qmail-scanner[26428]: Policy:Bad_MIME:RC:1(127.0.0.1)