Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Delphi Новый топик    Ответить
 Indy SMTP кодировка  [new]
nomorenames
Member

Откуда: Москва
Сообщений: 471
Что-то я не нашел, есть ли возможность в Indy SMTP в Delphi 7 установить кодировку исходящего сообщения. Он по умолчанию отправляет текст в KOI8-R.
Если есть, то как поставить?
18 дек 03, 13:04    [465158]     Ответить | Цитировать Сообщить модератору
 Re: Indy SMTP кодировка  [new]
Cooper
Member

Откуда: Фром Москоу
Сообщений: 3940
Я такой возможности там не нашел (хоть и долго искал).
Для кодировки сообщений (тела письма и сабжекта) использую библиотеку - synapse (ее можно в Инете найти).

===============================
Qper
18 дек 03, 14:33    [465423]     Ответить | Цитировать Сообщить модератору
 Re: Indy SMTP кодировка  [new]
nomorenames
Member

Откуда: Москва
Сообщений: 471
Нашел
Письмо (IdMsgSend) отправляется с помощью idSMTP. Вот в IdMsgSend и задаются два такие важные параметра
IdMsgSend.ContentType := 'text/plain';
IdMsgSend.CharSet := 'Windows-1251';


...
IdMsgSend.ContentType := 'text/plain';
IdMsgSend.CharSet := 'Windows-1251';
try
idSMTP.Send(IdMsgSend);
finally
idSMTP.Disconnect;
end;
18 дек 03, 16:13    [465724]     Ответить | Цитировать Сообщить модератору
 Re: Indy SMTP кодировка  [new]
Cooper
Member

Откуда: Фром Москоу
Сообщений: 3940
И что? Работает? В смысле письмо пришло в нужной кодировке?

===============================
Qper
18 дек 03, 16:20    [465737]     Ответить | Цитировать Сообщить модератору
 Re: Indy SMTP кодировка  [new]
nomorenames
Member

Откуда: Москва
Сообщений: 471
Ага. И в сабджекте и в теле сообщения все нормально

В противном случае, видимо по умолчанию, ставилось следующее
Content-Type: multipart/mixed; boundary="=_NextPart_2rfkindysadvnqw3nerasdf"
(это из пропертей принятого сообщения)

Сейчас в пропертях: Content-Type: text/plain; charset="Windows-1251" и все читается.
18 дек 03, 16:34    [465787]     Ответить | Цитировать Сообщить модератору
 Re: Indy SMTP кодировка  [new]
Cooper
Member

Откуда: Фром Москоу
Сообщений: 3940
А чем читаете письмо?
А русские буквы тоже читает нормально?

===============================
Qper
18 дек 03, 16:38    [465804]     Ответить | Цитировать Сообщить модератору
 Re: Indy SMTP кодировка  [new]
nomorenames
Member

Откуда: Москва
Сообщений: 471
Читаю MS Outlook 2000 sp-(9.0.0.6627)
Читается и английский текст и русский везде - subject/body/from. В Outlook Express можно поменять кодировку принудительно, а MS Outlook этого не позволяет.
18 дек 03, 16:42    [465813]     Ответить | Цитировать Сообщить модератору
 Re: Indy SMTP кодировка  [new]
smylikov
Member

Откуда:
Сообщений: 53
to nomorenames
Какая версия Indy ?
19 дек 03, 11:11    [466636]     Ответить | Цитировать Сообщить модератору
 Re: Indy SMTP кодировка  [new]
nomorenames
Member

Откуда: Москва
Сообщений: 471
Indy 9.00.10
19 дек 03, 11:44    [466723]     Ответить | Цитировать Сообщить модератору
 Re: Indy SMTP кодировка  [new]
nomorenames
Member

Откуда: Москва
Сообщений: 471
На самом деле не все так однозначно.
В Инди TidMessage есть такая гадость, как MessageParts, т.е. сообщение с вложением представляет из себя сообщение из нескольких частей. Так вот каждой части надо проставить ContentType. Обычно простой текст сообщения (сопроводиловка) требует установки ContentType := 'text/plain'.
Следующий пример посылает только текст без вложения в кодировке Windows-1251 - все читается без проблем как на русском, так и на английском, но стоит только подключить атачмент (см. закоментаренные строки), как настройка сбивается. В проперти принятого сообщения появляется вот такая строка: Content-Type: multipart/mixed; boundary="=_NextPart_2rfkindysadvnqw3nerasdf"; charset="Windows-1251" и кодировка сбивается на KOI8-R

ЗЫ Не забудьте на форму бросить кнопку и поменять адреса на вразумительные.
unit Unit1;


interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, IdBaseComponent, IdComponent, IdTCPConnection,
IdTCPClient, IdMessageClient, IdSMTP, IdMessage;

type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;


implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
LSMTP: TIdSMTP;
LMsg: TIdMessage; I:integer;
Year, Month, Day: Word;
begin
LSMTP := TIdSMTP.Create(nil);
LMsg := TIdMessage.Create(LSMTP);
DecodeDate(Now, Year, Month, Day);
with LMsg do begin
Subject := 'MailTest at ' + IntToStr(Day) + IntToStr(Month) + IntToStr(Year);
Recipients.EMailAddresses := 'address@mail.ru';
From.Text := 'MailSender';
ReplyTo.EMailAddresses:= 'reply@address.ru';
Body.Text := 'Тест на ' + DateToStr(Now) + ' ' + TimeToStr(Now) + ' (English text)';
CharSet:= 'Windows-1251';
ContentType :='text/plain';
Encoding:= meMIME;
// ПОДКЛЮЧЕНИЕ АТАЧМЕНТА
// TIdAttachment.Create(LMsg.MessageParts , 'c:\test.txt');
end;

with LSMTP do begin
Host := 'host.ru'; // ВАШ ХОСТ SMTP
// ЕСЛИ К ХОСТУ ПОДКЛЮЧЕНИЕ ПО ЛОГИНУ И ПАРОЛЮ
Username := 'user_name'; //ВАШ ЛОГИН!!!
Password:= 'password'; // ВАШ ПАРОЛЬ!!!
Connect;
try
Send(LMsg);
finally
ShowMessage('Сообщение отправлено.');
end;
Disconnect;
end;
FreeAndNil(LMsg);
FreeAndNil(LSMTP);
end;
end.
19 дек 03, 12:03    [466774]     Ответить | Цитировать Сообщить модератору
 Re: Indy SMTP кодировка  [new]
Сашка
Member

Откуда: Samara
Сообщений: 145
так все-таки, как корректно отправить/получить аттач, названный русскими буковками? the bat! получает названия аттачментов корректно независимо от установок ContentType для каждой части, а вот собственный pop3-клиент сохраняет названия аттачмента некорректно ...
5 янв 04, 18:29    [481736]     Ответить | Цитировать Сообщить модератору
 Re: Indy SMTP кодировка  [new]
KirillovA
Member

Откуда: ок на оби
Сообщений: 2294
> Cooper
расслабься - у чела ранняя ейфария ...
если у получателя секретарь - девочка с умом - зеркально противоположном красоте и простым аутглюк експрессом - она серано не прочтет его - ибо там надо по менюхам пошарица и выбрать другую кадировку ... и особливо если на ея ящик валица спам постоянный - то не будит лазить она по меню - и убьет письмо нафиг ...
я с индей долго бился - не помогло ... заголовки вроде мой почтовик не правит - но некоторые версии аутглюков ну напрочь заголовки вложений хз как передают ишо чтонить... и в исходниках инди сплошь и рядом - ето типа не локализовано и ето ... короче - гемор ...
6 янв 04, 02:18    [481954]     Ответить | Цитировать Сообщить модератору
 Re: Indy SMTP кодировка  [new]
nomorenames
Member

Откуда: Москва
Сообщений: 471
Мил человек КирилоффА, поверхностный ты какой-то, и шумливый. Слазил бы ты в соурсы инди, да посмотрел бы, действительно там стоит отсутствие локализации и хитрая строчка "=_NextPart_2rfkindysadvnqw3nerasdf", но тем способом, который я описал, получается все нормально в кодировке, которую я указал. Есть одно НО, но оно касается сообщений из нескольких частей, то бишь с вложенными файлами, там действительно беда, с которой надо разбираться, да и то не слишком сложно. А для девочки с менюхой в Экспрессе - любая почта не беда, а вот в Аутлуке, тут да... потрудиться надо с кодировкой. Да собна, мое это дело, кодировками заниматься, а твое - словеса пустые бросать туды-сюды. Успехов тебе в нелегком труде.
6 янв 04, 20:20    [483140]     Ответить | Цитировать Сообщить модератору
 Re: Indy SMTP кодировка  [new]
Cooper
Member

Откуда: Фром Москоу
Сообщений: 3940
2 KirillovA

Дык я и расслабился. Просто сам над этим бился не один день (и не одну неделю). Мозги раком стояли. Вот пытался человеку намекнуть, что не все так просто, как кажется.

автор
и особливо если на ея ящик валица спам постоянный - то не будит лазить она по меню - и убьет письмо нафиг ...


Это точно. У меня на следующей день письма от людей посыпались, что моя рассылка приходит с "кривой" кодировкой. Каждому не объяснишь, что это indy глючная и что нужно в настройка почтовика покапаться, да и не у каждого желание и время на это есть.

автор
я с индей долго бился - не помогло ... заголовки вроде мой почтовик не правит - но некоторые версии аутглюков ну напрочь заголовки вложений хз как передают ишо чтонить... и в исходниках инди сплошь и рядом - ето типа не локализовано и ето ... короче - гемор ...


Дык я тоже долго бился. И повторюсь мне помогла библиотека - synapse. Там несложно разобраться в коде без всяких хелпов. Вобщем после этого не один подписчик к моей рассылке претензий не предъявлял. А подписчиков не мало, с почтовиками на любой вкус.

2 nomorenames

Если у Вас всё-таки что-то получится (без всяких там - но есть одно НО!), то сообщите плиз. Буду рад признать, что был неправ и руки у меня карявые. А пока что это Вы словеса бросаете направо и налево, неимея работающего кода.

===============================
Qper Клонированный Усиленный Псевдочеловек для Ежедневного Разрушения
6 янв 04, 20:42    [483150]     Ответить | Цитировать Сообщить модератору
 Re: Indy SMTP кодировка  [new]
KirillovA
Member

Откуда: ок на оби
Сообщений: 2294
> Cooper
намыль мне на мыло плиз ету библиотеку будь добер... )
6 янв 04, 20:51    [483152]     Ответить | Цитировать Сообщить модератору
 Re: Indy SMTP кодировка  [new]
Cooper
Member

Откуда: Фром Москоу
Сообщений: 3940
2 KirillovA

Ушло.
===============================
Qper Клонированный Усиленный Псевдочеловек для Ежедневного Разрушения
6 янв 04, 21:11    [483160]     Ответить | Цитировать Сообщить модератору
 Re: Indy SMTP кодировка  [new]
KirillovA
Member

Откуда: ок на оби
Сообщений: 2294
Благодарю!
6 янв 04, 21:17    [483163]     Ответить | Цитировать Сообщить модератору
Между сообщениями интервал более 1 года.
 Re: Indy SMTP кодировка  [new]
Ater Dominus
Member

Откуда:
Сообщений: 13
что касается кодировки, я бы рекомендовал вместо 'Windows-1251' написать 'UTF-8'

В первом случае на почту пришла строка Те, so nаs nе vbyvаё, robyt? sylnіsymy, тогда как во втором случае пришло то, что во вложении.

В суть этой строки вникать не нужно, но второй вариант как раз исходный, который и отправлялся, и видно, что Win1251 потратила всю диакритику букв.
9 июн 18, 20:11    [21482748]     Ответить | Цитировать Сообщить модератору
 Re: Indy SMTP кодировка  [new]
Ater Dominus
Member

Откуда:
Сообщений: 13


К сообщению приложен файл. Размер - 4Kb
9 июн 18, 20:13    [21482749]     Ответить | Цитировать Сообщить модератору
Все форумы / Delphi Ответить