![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
|
|
#1
|
|||
|
|||
|
Оказывается это сообщение состоит из нескольких частей. Если смотреть заголовки через почтовый клиент, то они будут такими:
Код:
Content-Type: multipart/mixed;
boundary="----=_Part_2_161819575.1413783727126"А то, что я писал выше, это выдавал мне делфи, функцией idMessage1.SaveToFile Вот, нашел как прочитать сообщение в котором только одна часть. Код:
Memo1.Lines:= (IdMessage1.MessageParts.Items[0] as TIdText).Body; Подскажите как правильно написать условие для проверки Content-Type У меня почему-то срабатывает и до else и после Код:
begin
if not idIMAP41.Connected then
begin
AddToLog(' Невозможно подключиться к почтовому серверу. Попытка подключения... Error ' + IntToStr(GetLastError));
IdIMAP41.Host := IniConf.ReadString('mail','host','');
IdIMAP41.Port := IniConf.ReadInteger('mail','port',993);
IdIMAP41.Username := IniConf.ReadString('mail','username','');
IdIMAP41.Password := IniConf.ReadString('mail','password','');
IdIMAP41.IOHandler := TIdSSLIOHandlerSocketOpenSSL.Create(IdIMAP41);
IdIMAP41.UseTLS := utUseImplicitTLS;
idIMAP41.Connect;
if idIMAP41.Connected then
AddToLog(' Содинение с почтовым сервером!');
end;
IdIMAP41.SelectMailBox('INBOX');
for i := IdIMAP41.MailBox.TotalMsgs downto 1 do
begin
idIMAP41.Retrieve(i, idMessage1);
begin
begin
if idMessage1.ContentType = 'multipart/mixed' then
begin
tstr := (IdMessage1.MessageParts.Items[0] as TIdText).Body;
mailbody := tstr.Text;
end
else
mailbody := idMessage1.Body.Text; //получаем тело сообщения
end;
address := idMessage1.From.Address; //получаем адрес отправителя
subj := idMessage1.Subject;
rcpt := idMessage1.Recipients.EMailAddresses;
...Последний раз редактировалось M.A.D.M.A.N., 27.10.2014 в 21:02. |