ezpublish.ru / Форумы / Для новичков / Форма обратной связи и отправка сообщений на почту




Форма обратной связи и отправка сообщений на почту

Для доступа к форумам необходимо авторизоваться. Это можно сделать здесь

Автор Сообщение

Maxim Kopytov

Вс, 21 февраля 2010 9:54:57

Приветствую!
Сделал форму обратной связи.
Администратор получает сообщения с собранной информацией на e-mail.
Шаблон отправляемого сообщения(collectedinfomail.tpl):
{set-block scope=root variable=subject}
{"Collected information from %1"|i18n("design/base",,array($collection.object.name|wash))}
{/set-block}
{set-block scope=root variable=email_receiver}
{$object.data_map.recipient.content}{/set-block}
{"The following information was collected"|i18n("design/base"}:
====================================================

{section name=Attribute loop=$collection.attributes}


{if $:item.contentclass_attribute.identifier|ne('captcha')}
 {$Attribute:item.contentclass_attribute_name|wash}: {$Attribute:item.data_text|wash}
-------------------------------------------------------------------------------------
{/if}

{/section}


======================================================


Сообщения приходят в следущем виде:
The following information was collected:
===============================================
 Name: Vasya Pupkin
-------------------------------------------------------------------------------------
 Subject: Test
-------------------------------------------------------------------------------------
 Text message: Hallo World! This is my message for You!
-------------------------------------------------------------------------------------
 E-mail: name@mail.ru
-------------------------------------------------------------------------------------
 Phone: 222-333-322
-------------------------------------------------------------------------------------

=================================================



Как сделать чтобы сообщения приходили в HTML виде?
Как сделать чтобы копия сообщения отправлялась так же и пользователю отправившему сообщение? В данном случае на name@mail.ru.

------------------------
I love eZ Publish

Сергей Гедеон

Вс, 21 февраля 2010 14:08:38

В настройках site.ini есть возможность указания mime-type в http-header письма. Прописываете туда text/html и все работает

[MailSettings]
# Content type of mails, for instance text/plain or text/html
ContentType=text/plain

===----
Радоваться жизни можно тихо...
----====

Maxim Kopytov

Чт, 25 февраля 2010 18:25:09

Сергей, спасибо!
Как попробую, отпишусь!

------------------------
I love eZ Publish

Maxim Kopytov

Чт, 11 марта 2010 10:31:32

Возможно ли к форме обратной связи прикрутить дататип file, чтобы пользователи могли отправлять(приаттачивать) файлы, например фотографии?
Будет ли файл отправляться как вложение на почтовый ящик получателя?
Конечно это уже как бы не форма обратной связи.
Каким образом можно реализовать такую функцию?
Как наличие такой функции и возможность пользоваться ею анонимному пользователю повлияет на безопасность?

Вообще интересует, как можно реализовать отправку, публикацию файлов для анонимных пользователей.
Какие существуют ограничение и нюансы?

И еще вопрос. Я его уже задавал.
Как сделать чтобы копия сообщения отправлялась так же и пользователю отправившему сообщение? То есть чтобы сообщение получил как администратор сайта - recipient, так и сам пользователь заполнивший форму обратной связи. Желательно конечно чтобы админ получил письмо в одном виде, с одним текстом, а пользователь заполнявший форму в другом виде, но суть - сообщать посетителю сайта о том, что он вбил в форму и какие данные получил админ сайта.

------------------------
I love eZ Publish

Сергей Гедеон

Чт, 11 марта 2010 14:38:50

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

По поводу копии - тут реализация попроще, нужно в шаблоне где указывается ресипиент добавить переменную, указывающую на поле "Копия" в письме. Не помню есть ли это в стандартной функциональности, но если нет, то доделать очень просто (можно переписать код из модуля нотификейшна - там копия точно есть)

===----
Радоваться жизни можно тихо...
----====

Maxim Kopytov

Вс, 27 июня 2010 11:44:41

Сообщения на почту из формы обратной связи по умолчанию приходят без кодировки, в таком виде:

Следующая информация была собрана:
=====================================================================================

 Имя: Иван
-------------------------------------------------------------------------------------
 Тема сообщения: Предложение
-------------------------------------------------------------------------------------
 Текст сообщения: Это тестовое сообщение. Проверка.
-------------------------------------------------------------------------------------
 Адрес электронной почты: ivan@mail.ru
-------------------------------------------------------------------------------------
 Антиспам код: skipped
-------------------------------------------------------------------------------------

=====================================================================================


Кодировка конечно utf-8, но почтовый клиент ее не определяет. Где и что настроить, чтобы не было проблем с кодировкой.

И еще, программа отправитель письма значится как eZ Components. Можно ли изменить например на название сайта?

------------------------
I love eZ Publish

Сергей Гедеон

Пн, 28 июня 2010 12:34:26

Все можно настроить

Кодировка:
Проверьте чтобы в оверрайде вашего site.ini не замещалась стандартная кодировка:
[MailSettings]
# Which charset are allowed to send directly, those that do not match
# is converted to OutputCharset before being sent.
AllowedCharsets[]
AllowedCharsets[]=us-ascii
AllowedCharsets[]=utf-8
AllowedCharsets[]=iso-8859-1
AllowedCharsets[]=iso-8859-15
AllowedCharsets[]=cp1252
# Which charset to convert emails to if they are not in correct format
OutputCharset=utf-8

(это фрагмент дефолтных настроек)

Потом проверьте кодировку шаблонов:
в оверрайде template.ini не должна замещатся стандартная утф-8...
[CharsetSettings]
# The charset to use if no charset is specified in the template
DefaultTemplateCharset=utf-8

если необходимо использовать другую кодировку для всех шаблонов, и утф-8 для шаблона почты, то пропишите в начале шаблона строку
{*?template charset=utf-8?*}

Но учтите, что редактор должен сохранить шаблон именно в утф-8!!! (используйте PSPad, Notepad++ или что-то в этом роде), а то стандартный блокнот часто портит кодировку

Что ж до user-agent, то в lib/ezutils/classes/ezmail.php в строке 74 прописано такое:
        $this->UserAgent = "eZ Publish, Version $version";

Следовательно по дефолту этот заголовок и равен eZ Publish.... Если вы используете другие классы для почты (например классы компонент), то простым поиском по файлам найдите скрипт, где задается user-agent и посмотрите откуда он берет значение

===----
Радоваться жизни можно тихо...
----====

Maxim Kopytov

Сб, 10 июля 2010 4:02:14

Сергей, приветствую!

В настройках нигде нет перекрытия кодировки utf8.
В начале шаблона collectedinfomail.tpl прописал кодировку: {*?template charset=utf-8?*}

В RFC заголовке присутствует следующее:

Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 8bit


Меня смущает RFC заголовок. Нашел следующее:


По умолчанию, письма, как и в стандарте RFC 822 пишутся простым (неразмеченным) текстом в языковой кодировке US-ASCII, что по спецификации MIME может быть описано как "Content-type: text/plain; charset=us-ascii". Это значение полагается, если поле Content-type не определено. Поэтому почтовая программа получателя может неверно истолковать содержимое письма, если при отправке не было указано поле Content-type, но на самом деле текст письма имеет другую кодировку или даже тип.

При отсутствии поля Content-type или поля MIME-Version в заголовке MIME-письма нельзя быть точно уверенным, что письмо имеет языковую кодировку именно US-ASCII, поскольку могут еще встречаться почтовые программы, не использующие соглашения MIME. Но хотя возможно, что письмо, не содержащее в заголовке полей MIME-Version и Content-Type, может содержать все, что угодно, например, юниксовский tar-архив, сжатый gzip'ом и обработаный uuencode, все же, создателям почтовых программ рекомендуется оставлять этот факт без внимания и ориентироваться на значение по умолчанию, т.е. "text/plain; charset=us-ascii".

Необходимо учесть, что в будущем ожидается заметное увеличение числа регистрированных типов и особенно подтипов содержимого писем. Если почтовая программа встретит неизвестное ей значение поля Content-type, она должна интерпретировать содержимое этого письма как "application/octet-stream" .

Кажется такая проблема не только у меня:

http://projects.ez.no/enhancedezbinaryfile/forum/general/works_fine_but

http://issues.ez.no/IssueView.php?Id=16893&activeItem=3


Использовал код приведенный на этой странице

http://github.com/ezsystems/ezpub...18074/lib/ezutils/classes/ezmail.php

Теперь RFC такой:

MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit


Письма приходят в нормальной кодировке, только mail.ru определил как <Без темы>
The BAT определил:
Тема: Собранная информация с Контактная информация
Программа: eZ Components

------------------------
I love eZ Publish

Сергей Гедеон

Сб, 10 июля 2010 11:00:40

В скрипте с гитхаба есть строка:
 This class will be deprecated in the next eZ Publish release, and replaced with ezcMail from eZ Components.


Может на вашем сайте он уже заменен на ezcMail?

А на счет заголовков - мне кажется, что сервер может их замещать. Например, на одном из серверов замещался заголовок "From" на какой-то дефолтный заголовок указанный в настройках этого сервера (не знаю специально ли... потому что доменное имя адреса и доменные имена сервера не совпадали; или, может, случайно так получилось).
Посоветуйтесь с админом хостинга. Может у вас просто нет полноценных прав на отправку сообщений и часть заголовков замещаются на уровне сервера почты. Ну или sendmail/SMTP настроен криво.

===----
Радоваться жизни можно тихо...
----====