Модераторы: Aliance, skyboy, MoLeX, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Аттач на SMTP, Как сделать? 
:(
    Опции темы
Talalayev
  Дата 28.7.2006, 08:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 27.7.2006

Репутация: нет
Всего: нет



Доброго времени суток! Народ, подскажите пожалуйста, как средствами протокола SMTP приаттачить к письму например Html сираницу с картинкой. Какие для этого есть команды SMTP? Огромное спасибо. 
PM MAIL   Вверх
Twirl
Дата 28.7.2006, 14:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 28.7.2006

Репутация: нет
Всего: нет



Текстовое письмо выглядит примерно так:
Код

From: ...
To:...
Subject:...
Content-Type: text/plain

Текст письма

Чтобы приаттачить нечто, отличающееся от текста (html например), необходимо поменять заголовок:
Код

Content-Type: multypart/mixed; boundary=BOUND

Здесь BOUND - любая уникальная строка, которая гарантировано не встретится в письме - лично я использую md5(time(0))
Далее, через пустую строку вкладываются все вложения в виде:
Код


--BOUND
Content-Disposition: attachement (вариант inline. Здесь же может быть ;filename="имя файла")
Content-Transfer-Encoding: base64 (варианты: 8bit, quoted-printable)
...Другие заголовки


Далее через пустую строку следует текст аттачмента, закодированный указанным способом. В частности, для base64, это будет chunk_split(base64_encode($Text))
Далее может идти следующий аттачмент. После всех аттачментов ставится --BOUND--
Полный пример:
Код

From: <>
To: <>
Subject: 
Content-Type: multipart/mixed; boundary=06899ae809844f8f6e54b218bfbe0cac

--06899ae809844f8f6e54b218bfbe0cac
Content-Type: text/html
Content-Disposition: attachement
Content-Transfer-Encoding: base64

PFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMCBUcmFuc2l0aW9uYWwv
LVOIiAiaHR0cDovL3d3dyопроMy5vcmcvVFIvUkVDLWh0bWw0MC9sb29zZS5kdGQiPgo8aHRtbD48
Ym9keT48cD5IZWxsbyw2VyZ2V5IEtvbnN0YW50aW5vdg0KWW91IGhhdmUganVzdCByZWdpc3Rl
cBhdCBhbWVsa292aWNiBUbyапрBjb25maXJtIHlvdXIgcmVnaXN0cmF0aW9uLCBwcm9jZWVkIGZv
bGxvd2luZyBsaW5rOg0Kh0dHA6Lоy9hbWVsa292aWNoL2NvbmZpcm0/aWQ9ZDEwYTJiMGE3ZGVl
ZTM3MWY1MzU3OGY3ODkNWExMmYKPC9wPjwvYm9keT48L2h0bWw+Cg==


--06899ae809844f8f6e54b218bfbe0cac--
 
PM MAIL   Вверх
Talalayev
Дата 29.7.2006, 19:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 27.7.2006

Репутация: нет
Всего: нет



Twirl, 
Сакжите, а как прикрепить картинку? То есть атрибут Filename? Мне просто надо зааттачить штмл страницу, и картинку, которая отображается в странице. Как назначить имя аттачментируемому файлу?Там просто расширение идет .att, можно поменять? И надо чтобы эта приаттаченная страница
отображалась в письме в неизменном виде. Как это сделать? Помогите пожалуйста, очень буду признателен. Спасибо. 
PM MAIL   Вверх
Twirl
Дата 30.7.2006, 06:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 28.7.2006

Репутация: нет
Всего: нет



Значит, ситуация такая. Вложенный HTML будет автоматически отображен на экране, если он вложен так:
Код

From: <>
To: <>
Subject:
Content-Type: multipart/mixed; boundary=BOUND

--BOUND
Content-Type: text/html; charset=... //Здесь пишешь кодировку
Content-Disposition: attachement
Content-Transfer-Encoding: base64

//Здесь идет собственно HTML, перекодированный указанным способом - например chunk_split(base64_encode($Text))

--BOUND--

Если хочешь приаттачить картинку так, чтобы браузер автоматически отобразил ее после текста письма, делаешь так:
Код

--BOUND
Content-Type: image/gif //либо image/jpeg, image/bmp - смотря что вложил
Content-Disposition: attachement; filename="file.gif"
Content-Transfer-Encoding: base64

//Здесь идет собственно содержимое файла картинки, перекодированное указанным способом - например chunk_split(base64_encode(file_get_contents($file)))

--BOUND--

(--BOUND-- ставится ОДИН раз после всех аттачей, но каждый аттач начинается с --BOUND)
Существует также возможность вложить картинки, ссылки на которые стоят в теле HTML, чтобы браузер автоматически искал картинку во вложениях, а не на внешнем сервере. Как это делается - ищу сам 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Сеть | Следующая тема »


 




[ Время генерации скрипта: 0.0426 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.