Анатолий, либо не использовать чужую метрику, передающую куки без этого параметра, либо связаться с техподдержкой этой метрики и описать им проблему.
Также очень может быть, что эту проблему уже исправили, но куки старые, в таком случае удалить эти куки, на которые ругань, и обновить страницу (новые могут прийти уже с нужным атрибутом, но это в случае, если проблема была исправлена на стороне разработчиков этой метрики).
Valsin, попробуйте вместо отправки сообщения записать его в файл с расширением eml, скачать на компьютер и открыть в любом почтовом клиенте, например в Mozilla Thunderbird. Если заголовки и тело письма правильно формируете, то в таком случае письмо должно открыться нормально, если нет - то что-то с форматом у вас не так и сообщение не соответствует ему (RFC-2822, RFC-2046)
Valsin, а при просмотре исходного кода письма, там изображение закодированное присутствует? Все заголовки на месте?
А ещё, в переменной $the_file у вас путь, а не имя файла, уверены, что в Content-Disposition можно указать путь вместо имени и все почтовые клиенты это проглотят?
Егор Антропов, а в настройках минимальный размер шрифта какой выставлен? Возможно, по дефолту там и не всегда 0, а как-то зависит от чего-нибудь (например, от размера экрана, либо от версии к версии значение по дефолту менялось). Потому как в Опере у меня там тоже не 0 стоял, а после сброса профиля пользователя стал 0, хотя сам я тоже ничего не менял.
qooke, если вам нужно, чтобы быстрее выполнялось, я бы посмотрел в сторону ветвления (получится 1 операция ветвления и максимум 4 булевых операции):
if (D) {
return A | B | C;
} else {
return (A^B^C) | (A&B);
}
Или разветвить сильнее (1 ветвление и 2 логические операции или 2 ветвления и 1 логическая операция):
if (D) {
return A | B | C;
} else {
if (A) {
return B | C;
} else {
return B & C;
}
}
Если булевы переменные равны 1 и можно их суммировать, то вторую часть можно ещё упростить (1 ветвление и 2 логических операции или 1 ветвление и 2 сложения и 1 сравнение):
if (D) {
return A | B | C;
} else {
return A + B + C > 1;
}
Примеры писал на человекочитаемом псевдокоде (на основе C), в реальности - возможно, ради ускорения лучше использовать ассемблер. Ветвление можно считать двумя операциями, это тест и джамп обычно в большинстве архитектур процессора.
Владимир Вивота, разобрать и осмотреть клавиатуру. Проще заменить клавиатуру, но есть "народные" методы ремонта - токопроводящий клей, графит, кому-то даже при помощи токопроводящей фольги удавалось починить.
Если ширина 3 блока, а у вас будет 5 блоков по 2 - то вы их никак в эту сетку не впишете (без поворотов на 90 градусов).
Так что в общем случае, идея неудачна.
Разве что генерировать ширины блоков так, чтобы блоки шириной в 2 никогда не попадали на стык (но тогда блоки придётся добавлять только порциями по 3, или по 1 широкому 1 узкому).
Также очень может быть, что эту проблему уже исправили, но куки старые, в таком случае удалить эти куки, на которые ругань, и обновить страницу (новые могут прийти уже с нужным атрибутом, но это в случае, если проблема была исправлена на стороне разработчиков этой метрики).