Сбой класса электронной почты CodeIgniter в определенном контексте - PullRequest
2 голосов
/ 20 октября 2011

Я использую библиотеку 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)

1 Ответ

1 голос
/ 21 октября 2011

Проверяли ли вы, что каждое значение, передаваемое Tank Auth электронной почте, является правильным?

Кроме того, send () возвращает false?

Кроме того, у вас есть какие-либодругие сообщения электронной почты отправляются там, где вам может понадобиться: clear ();

Просто мысль ...

Хорошо, тогда

Какой протокол вы используете?Я обнаружил, что SMTP часто работает для меня лучше, чем почта.

SMTP (или обновление программного обеспечения) также может решить вашу проблему «Policy: Bad_MIME».Смотри: http://www.atomicorp.com/forum/viewtopic.php?f=2&t=4337

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...