Всем привет, в самом начале открытия данного сайта, я писал статьи по отправке email средствами Delphi, а также отправке sms-сообщений , где использовал компонент TidSMTP. Возможно в тех статьях, я рассмотрел не все аспекты по работе с email, вот мне один из пользователей моего блога задал следующие вопросы:
- Кодировка текста при отправке почты.
- Запрос о доставке и прочтении писем.
- Отправка письма сразу на несколько адресов, как в outlook.
На них я пообщел, в ближайшее время, дать ответ. Вот и настал тот самый момент, когда я хотел бы ответить на данные вопросы.
Что касается кодировки текста тела email-сообщения, я не освещал это дело, так как это очень часто и много раз освещалось на различных форумах о программировании. Тем более в некоторых версиях Indy с кодировкой вроде бы, как в порядке. Но раз пользователь спросил я отвечу.
Для преобразования кодировки сообщения существует множество способов, я например, пользуюсь : либо статьей из DelphiWorld: Как можно перекодировать сообщение (содержание) из Win в КОИ8-Р для отправки по EMail.
Либо, некоторым может также помочь, указав кодировку в самом письме, через свойство компоненте TIdMessage, например:
var
MSG:TIdMessage;
begin
MSG.Charset:='UTF-8';
end;
Но тогда, сам текст письма, также не забывайте перекодировать в соответсвующую кодировку, например:
MSG.Body.Text:=UTF8Encode('текст');
Либо
MSG.Body.Text:=AnsiToUtf8('текст');
Ну вот вроде бы, что касается кодировки и все.
Переходим ко второму вопросу, вопрос о доставке и прочтении писем. То есть возьмем для примера тот же самый Microsoft Outlook, в котором, когда читаешь сообщение, сразу заноситься в папку Прочитанные, так вот, насколько я знаю в компоненте TIdMessage нету такого флага, который может отслеживать прочитанные или непрочитанные, это все реализуется в самих почтовых программах. То есть, в самое программе отслеживается, если это письмо было открыто, то оно заноситься в папку Прочитанные, поэтому данный пункт необходимо реализовывать самим.
Что касается отправки письма, сразу нескольким адресатам, как в том же самом Microsoft Outlook, то когда Вы указываете адресат получателя, то просто-напросто необходимо указывать их через запятую, например:
msg.Recipients.EMailAddresses:='email1@mail.ru,email2@yandex.ru';
Либо есть второй вариант, можно отправить письмо, затем отключиться и отправить письмо следующему адресату, то есть организовать это все дело через цикл, но таким способом немного можно отправить до 100 сообщений, так как почтовый сервер не дает так часто подключаться к нему, если только он для таких целей предоставляет отдельный порт.
В настоящее время очень популярны смартфоны, то есть другими словами карманные компьютеры. Они уже давно смещают с рынка обычные мобильные телефоны. Например, Вы можете купить htc merge и убедиться в том, что действительно лучше в Наше время иметь смартфон, чем обычные телефон, так как технологии развиваются, а их проще реализовывать в карманных компьютерах. Приобретайте хорошие смартфоны дешево и только качественной фирмы, одной их которых является HTC.