X   Сообщение сайта
(Сообщение закроется через 3 секунды)



 

Здравствуйте, гость (

| Вход | Регистрация )

2 страниц V   1 2 >
Открыть тему
Тема закрыта
> Отправка писем php
fedornabilkin
fedornabilkin
Topic Starter сообщение 19.10.2016, 11:25; Ответить: fedornabilkin
Сообщение #1


Здравствуйте. Самый мой больной вопрос. Почта вроде кое-ка отправляется, но надо отправлять как положено.
Проблема в том, что почтовики вставляют пробел или ! в тело письма в любом месте, а при кодировке utf-8 получается разрыв символа и в тексте письма встречается кракозябринка. Погуглил, предлагают вставлять переносы строк в разных местах в теле письма, если оно большое. Сделал вставку после каждого тега <td>, но так и не понял, помогло или нет. Иногда есть кракозябринки, а иногда их нету. Пока не нашел от чего это зависит.
Дальше решил посмотреть исходники писем от разных крупных проектов в том числе и от Яндекса. Увидел вот такую картину.
kiss_82kb.1476860924.png

Если с заголовками еще можно разобраться, то как закодировать тело письма я не понял. Вычитал на просторах, что при base64 необходимо разбивать на строки по 76 символов и в конце высчитывать по байтам размер. Если не хватает одного, то добавлять =, а если не хватает двух, то == или ничего не добавлять, если байт хватает.
Посмотрел библиотеку libmail, но там кодирование происходит только при вложении файлов. При этом тело письма не кодируется.

Подскажите как сделать отправку писем в base64 с кодированием всего тела письма. Давайте разберемся с этим раз и навсегда.
0
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
ShowPrint
ShowPrint
сообщение 19.10.2016, 12:11; Ответить: ShowPrint
Сообщение #2


fedornabilkin, та же фигня, я пока оставил как есть. Раз ты сам не победил, то куда уж мне =)

Есть повод последить за темой  :rolleyes:
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
miketomlin
miketomlin
сообщение 19.10.2016, 12:28; Ответить: miketomlin
Сообщение #3


Текстовое содержимое кодировать не обязательно. Хотя основная используемая мной библиотечная ф-ция это делает, если не ошибаюсь (эту либу писал не я, а моя подруга). Почитайте описание след. ф-ций:
base64_encode
chunk_split
Там все просто. У последней ф-ции есть параметр, позволяющий указать длину строки и по умолчанию равный как раз 76, хотя его все равно часто приходится указывать явно, чтобы явно определить следующий за ним параметр «разрыв строки» (спеки требуют значения "\r\n", но используемый линуксовый софт может внести свои коррективы).
Т.е. иногда приходится писать просто "\n", если настроена подмена.
Кстати, текст часто еще кодируется в quoted-printable-кодировке.
В php для этого тоже есть ф-ция.


--------------------
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
miketomlin
miketomlin
сообщение 19.10.2016, 12:50; Ответить: miketomlin
Сообщение #4


Странно, что на скрине тема письма не закодирована. Это косяк отправителя. Там в самом коде указывается кодировка и способ кодирования. B – означает base64.
Вот:

$subject='=?UTF-8?B?'.base64_encode('Привет!').'?=';

При условии, что исходник в UTF-8 представлен.


--------------------
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
ShowPrint
ShowPrint
сообщение 19.10.2016, 14:06; Ответить: ShowPrint
Сообщение #5


(miketomlin @ 19.10.2016, 15:28) *
base64_encode chunk_split
miketomlin, у себя я эти функции использую для кодировки файлов (подсмотрел где-то на просторах):

chunk_split(base64_encode($_File))

Правильно я понимаю что и текст может аналогично кодироваться?

fedornabilkin, если будешь пробовать - сообщи о результатах, плз...
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
miketomlin
miketomlin
сообщение 19.10.2016, 14:22; Ответить: miketomlin
Сообщение #6


Да, естественно. Тут просто кодируются бинарные данные (любой природы) ограниченным алфавитом (из 64 знаков, как можно понять из названия).


--------------------
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
miketomlin
miketomlin
сообщение 19.10.2016, 14:45; Ответить: miketomlin
Сообщение #7


Вы можете даже тот же самый Content-Type: multipart/mixed использовать с единственным закодированным фрагментом с текстом сообщения. Фрагмент снабжаете теми же заголовками, только Content-Disposition тут без надобности, а в Content-Type пишете просто кодировку и тип представления. Т.е. к примеру если для файла было:

Content-Transfer-Encoding: base64
Content-Type: application/zip; name="archive.zip"
Content-Disposition: attachment; filename="archive.zip"


то к примеру для текста может быть:

Content-Transfer-Encoding: base64
Content-Type: text/html; charset=utf-8


--------------------
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
ixman
ixman
сообщение 19.10.2016, 17:05; Ответить: ixman
Сообщение #8


Что-то я ни разу с такой проблемой не сталкивался, хотя с отправкой писем работаю очень часто. Но я использую PHPmailer, может в нём изначально всё как надо реализовано. Не вникал в принципы его работы.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
miketomlin
miketomlin
сообщение 19.10.2016, 19:01; Ответить: miketomlin
Сообщение #9


Речь о более низком уровне работы с данными. Насколько я понимаю, мы говорим о формате данных, скармливаемых ф-ции вроде mail(). А вы с вашей либой небось еще и совсем др. метод отправки писем используете – через промежуточный почтовый ящик, а не напрямую.


--------------------
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
ixman
ixman
сообщение 19.10.2016, 19:07; Ответить: ixman
Сообщение #10


Это зависит от требований заказчика. Да в основном или через яндекс или через google почту. А так бывает и со своих серверов. Хотя я же говорю, я особо не смотрел как сама либа отсылает письма.

Ранее тоже использовал mail(), были проблемы с доставкой. Поэтому решил её не использовать. 
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
2 страниц V   1 2 >
Открыть тему
Тема закрыта
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


Свернуть

> Похожие темы

  Тема Ответов Автор Просмотров Последний ответ
Горячая тема (нет новых ответов) Вёрстка HTML-писем
30 Vampler 28854 27.3.2024, 12:41
автор: Vampler
Открытая тема (нет новых ответов) СОЗДАНИЕ : / САЙтЫ / ЛЕНДЫ / БОТЫ ТГ / ВАЙТЫ / КРЕО / СОФТЫ / ДИЗАЙН [PHP, JS, HTML/CSS] и другое
5 CULA 3291 19.12.2023, 18:55
автор: CULA
Открытая тема (нет новых ответов) Услуги по созданию и доработке скриптов PHP, MySQL, JavaScript, jQuery
Разработка сайтов и сервисов под-ключ
0 alexey 1171 24.11.2023, 14:46
автор: alexey
Горячая тема (нет новых ответов) Тема имеет прикрепленные файлыВеб-разработка (HTML5, CSS3, JavaScript, jQuery, Ajax, PHP)
56 qpPeW 44766 19.7.2023, 10:03
автор: qpPeW
Открытая тема (нет новых ответов) Верстка электронных писем бесплатно
0 Gidemopassan 1499 23.6.2023, 10:12
автор: Gidemopassan


 



RSS Текстовая версия Сейчас: 29.3.2024, 6:29
Дизайн