Модераторы: Snowy, Poseidon, MetalFan

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> СРОЧНО!Требуется консультация-почтовые компоненты 
:(
    Опции темы
Snowy
Дата 1.4.2005, 07:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

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



Цитата
что означают слова nil и with

nil - указатель на ничто. Применяется либо для зануления указателей (если присваиваем переменной), либо как параметр (когда хотим указать, что мы не собираемся ни на что указывать).

with - используется зля укорачивания кода. Этим словом мы указываем, что будем работать со свойствами данного объекта.
Например
Код

// вместо того, чтобы писать
Memo1.Lines.Add('первая строка')
Memo1.Lines.Add('вторая строка');
Memo1.Lines.Add('третья строка');
Memo1.Lines.Add('четвертая строка');
// можно написать так:
with Memo1.Lines do begin
  Add('первая строка');
  Add('вторая строка');
  Add('третья строка');
  Add('четвертая строка');
end;

Цитата
(что значит "on e:Exception do" и откуда переменная e.message).

Оттуда и взялась, что тут ты указал, что зовут ее так. Это обработка исключительных ситуаций. Почитай в хелпе. Создается класс-исключение. Чтобы получить его текст вручную, а не ловить стандартное окно об ошибке и требуется такая конструкция.
PM MAIL   Вверх
Неизвестный программист
Дата 1.4.2005, 16:20 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Когда я убираю "try" из такого фрагмента:

// deliver message
with TIdSMTP.Create(nil) do
try
Host := smtpServer;
if (authUsername <> '') then
begin
AuthenticationType := atLogin;
Username := authUsername;
Password := authPassword;
end;
Connect;
Send(msg);
finally
Free;
end;

мне почему-то говорят:
Undeclared identifier: 'AuthType'
Undeclared identifier: 'Username'
Undeclared identifier: 'Password'
Undeclared identifier: 'Connect'
Undeclared identifier: 'Send'
Undeclared identifier: 'Free'

Ведь "try" же управляет обработкой исключительных ситуаций? Почему тогда удаление "try" так повлияло на все остальное?
  Вверх
_hunter
Дата 1.4.2005, 16:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

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



потома как ты begin забыл дописать и with начинает влиять только на первую строку


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
Guest
Дата 1.4.2005, 20:48 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Цитата(_hunter @ 1.4.2005, 16:25)
tempora mutantur, et nos mutamur in illis

Loquerisne Latine???
  Вверх
Неизвестный программист
Дата 2.4.2005, 06:36 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











А как бы сделать так,чтобы почтовые компоненты кодировку не трогали?У меня PHP-скрипт на локальном сервере в заголовок письма вставляет "Content-Type: text/html;charset=windows-1251",а когда письмо доходит,в нем почему-то остается только "Content-Type:text/html".И тема письма становится такой: ?KOI8-R?B?0uXs4A==?=

  Вверх
<Spawn>
Дата 2.4.2005, 06:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Око кары:)
****


Профиль
Группа: Экс. модератор
Сообщений: 2776
Регистрация: 29.1.2003
Где: Екатеринбург

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



Модератор: Пожалуйста, один топик - один вопрос.

Попробуй установить кодировку в TidMessage.CharSet

Это сообщение отредактировал(а) <Spawn> - 2.4.2005, 07:03


--------------------
"Для некоторых людей программирование является такой же внутренней потребностью, подобно тому, как коровы дают молоко, или писатели стремятся писать" - Николай Безруков.
PM MAIL ICQ   Вверх
Guest
Дата 2.4.2005, 20:58 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Цитата
Попробуй установить кодировку в TidMessage.CharSet

Так я же не могу заранее знать,какая у всех писем кодировка!Нельзя ли сделать так,чтобы сообщение из стандартного ввода отсылалось таким,какое оно есть? Или может быть,есть другой способ отправки почты?Через сокеты например?А то в этих компонентах,я вижу,какой-то непродуманный способ формирования и отсылки писем применяется.
  Вверх
Неизвестный программист
Дата 4.4.2005, 04:55 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Или сделать так,чтобы заголовки сообщения не изменялись.
  Вверх
Snowy
Дата 4.4.2005, 07:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

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



Цитата
чтобы почтовые компоненты кодировку не трогали?

После msg := TIdMessage.Create(nil);
Добавь msg.NoEncode:=true;

P.S. Зарегестрируйся.
Добавлено @ 07:10
Цитата
Или сделать так,чтобы заголовки сообщения не изменялись.

Не изменялись? Они создаются с нуля.
Но если тебе так важны заголовки, то удаляй ненужные из msg.HeaderList и добавляй свои.
(Если удаляешь все - то на твой страх и риск - там ведь адреса откуда-куда прописаны).
HeaderList - это TStringList, в котором находятся строки заголовка.
Дополнительно есть msg.ExtraHeaders - дополнительные заголовки, но на настройки они не влияют.

PM MAIL   Вверх
Неизвестный программист
Дата 4.4.2005, 10:14 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Цитата(Snowy @ 4.4.2005, 07:03)
Цитата
чтобы почтовые компоненты кодировку не трогали?

После msg := TIdMessage.Create(nil);
Добавь msg.NoEncode:=true;

P.S. Зарегестрируйся.
Добавлено @ 07:10
Цитата
Или сделать так,чтобы заголовки сообщения не изменялись.

Не изменялись? Они создаются с нуля.
Но если тебе так важны заголовки, то удаляй ненужные из msg.HeaderList и добавляй свои.
(Если удаляешь все - то на твой страх и риск - там ведь адреса откуда-куда прописаны).
HeaderList - это TStringList, в котором находятся строки заголовка.
Дополнительно есть msg.ExtraHeaders - дополнительные заголовки, но на настройки они не влияют.

Попробовал msg.NoEncode:=true. Письма стали приходить в нормальном виде,но почему-то не работает добавка заголовков в письмо.Например,конструкция типа:

if (Msg.From.Address = '') then
if (defaultFrom = '') then
raise Exception.Create('email is missing sender''s address')
else
msg.From.Address := defaultFrom;

Почему-то defaultFrom не подстанавливается на место обратного адреса,если его нет.

Заголовки важны для указания кодировки письма.Кроме того,название темы менялось на ?koi-8? и т. д.

Заголовки не с нуля формируются,а подаются на ввод программы в готовом виде,например,серверным скриптом.

а как можно управлять заголовками через msg.HeaderList?Я и не собираюсь их все удалять - наоборот хочу оставить все как есть,и добавить,если каких-то не достает (дата,обратный адрес).
  Вверх
Snowy
Дата 4.4.2005, 10:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

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



Цитата
Заголовки не с нуля формируются,а подаются на ввод программы в готовом виде,например,серверным скриптом.

Если заголовок уже готов - не нужно подставлять всякие адреса от кого-кому - они уже в заголовке должны быть.
Просто чисти хедерлист и заполняй его своим.
PM MAIL   Вверх
Неизвестный программист
Дата 5.4.2005, 08:47 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Цитата(Snowy @ 4.4.2005, 10:36)
Просто чисти хедерлист и заполняй его своим.

А можно пример?Как работать с msg.headerlist.Между прочим,я нашел только msg.header,а IdHeaderList - отдельный компонент.
  Вверх
Snowy
Дата 5.4.2005, 09:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

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



Ну да. Параметр называется header. TIdHeaderList - это класс.
header это как раз и есть параметр класса THeaderList.
А работать с ним нужно почти так же, как и с обычным TStringList.
Разница только в том, что добавление идет не через Add, а через AddStdValues.
Причем параметр обязательно должен быть вида [email protected]
То есть параетр=значение.
Код

mgs.header.AddStdValues('[email protected]');

PM MAIL   Вверх
Неизвестный программист
Дата 7.4.2005, 06:11 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Я написал вот так:
if (msg.Headers.Values['From'] = '') then
msg.Headers.Values['From'] := defaultFrom;
но мне в лог-файле сказали "Bad sequence of commands".
Что это значит? И вообще в каких случаях такая надпись появляется?
  Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Сети"
Snowy
Poseidon
MetalFan

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делится вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Snowy, Poseidon, MetalFan.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Сети | Следующая тема »


 




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


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

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