Никто, казалось, действительно не нашел окончательного ответа, поэтому я немного погубил и узнал, почему.
в системе / library / Email.php, сначала посмотрите на строку 1552:
if ( ! mail($this->_recipients, $this->_subject, $this->_finalbody, $this->_header_str, "-f ".$this->clean_email($this->_headers['From'])))
Кажется, все посылает все персидское. У меня тоже были те же симптомы. Чтобы убедиться, что я был сумасшедшим, я вставил сразу перед ...
mail($this->_recipients, $this->_subject, $this->_finalbody)
, поэтому я в основном удалил все заголовки и дал PHP по умолчанию. Бинго! Без заголовков CI это работает. С заголовками CI это не так. Итак, что это?
Копаясь еще немного, я посмотрел, где html инициализируется и используется. Оказывается, что на самом деле ничего не происходит до 1046, где он строит тело сообщения.
из строки 1048:
if ($this->send_multipart === FALSE)
{
$hdr .= "Content-Type: text/html; charset=" . $this->charset . $this->newline;
$hdr .= "Content-Transfer-Encoding: quoted-printable";
}
else
{
$hdr .= "Content-Type: multipart/alternative; boundary=\"" . $this->_alt_boundary . "\"" . $this->newline . $this->newline;
$body .= $this->_get_mime_message() . $this->newline . $this->newline;
$body .= "--" . $this->_alt_boundary . $this->newline;
$body .= "Content-Type: text/plain; charset=" . $this->charset . $this->newline;
$body .= "Content-Transfer-Encoding: " . $this->_get_encoding() . $this->newline . $this->newline;
$body .= $this->_get_alt_message() . $this->newline . $this->newline . "--" . $this->_alt_boundary . $this->newline;
$body .= "Content-Type: text/html; charset=" . $this->charset . $this->newline;
$body .= "Content-Transfer-Encoding: quoted-printable" . $this->newline . $this->newline;
}
Отбрасывание send_multipart между TRUE и FALSE сделает mail класс работает или не работает.
Просмотрел код класса электронной почты Ignitor's document ничего не показывает. Переход к строке 52:
var $send_multipart = TRUE; // TRUE/FALSE - Yahoo does not like multipart alternative, so this is an override. Set to FALSE for Yahoo.
Итак, у вас это есть. Возможно, ошибка в том, как CI делает многопользовательские сообщения? Предпочтение скрытой конфигурации
$config['send_multipart'] = FALSE;
в файле email.php похоже на трюк.
ArrayList newArrayList = (ArrayList) oldArrayList.clone();
ArrayList first = new ArrayList ();
ArrayList copy = (ArrayList) first.clone ();
Это должно также работать:
ArrayList<String> orig = new ArrayList<String>();
ArrayList<String> copy = (ArrayList<String>) orig.clone()
Я нахожу, что использование addAll хорошо работает.
ArrayList<String> copy = new ArrayList<String>();
copy.addAll(original);
круглые скобки используются, а не синтаксис дженериков
Почему Вы хотели бы клонироваться? Создание нового списка обычно имеет больше смысла.
List<String> strs;
...
List<String> newStrs = new ArrayList<>(strs);
сделанный Job.
Я думаю, что это должно добиться цели использование API Наборов:
Примечание : метод копии работает в линейное время.
//assume oldList exists and has data in it.
List<String> newList = new ArrayList<String>();
Collections.copy(newList, oldList);
Сообщите, что Object.clone () имеет некоторые основные проблемы, и его использованию препятствуют в большинстве случаев. Посмотрите Объект 11, от" Эффективный Java" Joshua Bloch для полного ответа. Я полагаю, что можно безопасно использовать Object.clone () на массивах типа примитива, но кроме этого необходимо быть разумными о надлежащем использовании и переопределении клона. Вы - вероятно, более обеспеченное определение конструктора копии или статического метода фабрики, который явно клонирует объект согласно Вашей семантике.
Будьте очень осторожны при клонировании ArrayLists. Клонирование в Java мелко. Это означает, что только клонирует сам Arraylist и не его участников. Таким образом, если Вы будете иметь ArrayList X1 и клонируете его в X2, то любое изменение в X2 также проявит в X1 и наоборот. Когда Вы клонируетесь, Вы только генерируете новый ArrayList с указателями на те же элементы в оригинале.