Кодировки при отправке E-Mail через NMSMTP
От: Paha007 Россия  
Дата: 11.09.03 06:02
Оценка:
Я отправляю письмо с помощью NMSMTP в Delphi.
Всё получается хорошо, только отправляется оно в Windows кодировке, а по умолчанию во всех почтовых прогах KOI8-R.
Что делать, чтобы отправить в KOI8-R???

Вот листинг:
    NMSMTP1.Host := 'www.mail.ru';
    NMSMTP1.UserID := 'brusina';
    NMSMTP1.Connect;
    NMSMTP1.SubType:=mtHTML;

    NMSMTP1.ClearParams := true;

    NMSMTP1.SubType := mtPlain;
    NMSMTP1.EncodeType := uuMime;
    NMSMTP1.PostMessage.FromAddress := '*****@mail.ru';

    NMSMTP1.PostMessage.FromName := 'From ******';
    NMSMTP1.PostMessage.ToAddress.Text := '*****@mail.ru';
    NMSMTP1.PostMessage.ToCarbonCopy.Text :='';
    NMSMTP1.PostMessage.ToBlindCarbonCopy.Text := '';
    NMSMTP1.PostMessage.Body.Text :=memo2.text;

    NMSMTP1.PostMessage.Attachments.Text := '';
    NMSMTP1.PostMessage.Subject :='For ******';
    NMSMTP1.PostMessage.LocalProgram := '';
    NMSMTP1.PostMessage.Date := '12/11/2003';
    NMSMTP1.PostMessage.ReplyTo := '';
    NMSMTP1.SendMail;


11.09.03 18:15: Перенесено модератором из 'Прочее' в Дельфи/Билдер. — ХД
Re: Кодировки при отправке E-Mail через NMSMTP
От: akasoft Россия  
Дата: 11.09.03 06:58
Оценка:
Здравствуйте, Paha007, Вы писали:

P>Я отправляю письмо с помощью NMSMTP в Delphi.

P>Всё получается хорошо, только отправляется оно в Windows кодировке, а по умолчанию во всех почтовых прогах KOI8-R.
P>Что делать, чтобы отправить в KOI8-R???

Использовать перекодировку

    NMSMTP1.PostMessage.Body.Text := WinToKoi(memo2.text);


и обратно.

Взять можно много где, например, на Королевстве Дельфи .
... << RSDN@Home 1.1 beta 3 >>
Re[2]: Кодировки при отправке E-Mail через NMSMTP
От: Paha007 Россия  
Дата: 12.09.03 01:46
Оценка:
Здравствуйте, akasoft, Вы писали:

A>Здравствуйте, Paha007, Вы писали:


P>>Я отправляю письмо с помощью NMSMTP в Delphi.

P>>Всё получается хорошо, только отправляется оно в Windows кодировке, а по умолчанию во всех почтовых прогах KOI8-R.
P>>Что делать, чтобы отправить в KOI8-R???

A>Использовать перекодировку


A>
A>    NMSMTP1.PostMessage.Body.Text := WinToKoi(memo2.text);
A>


A>и обратно.


A>Взять можно много где, например, на Королевстве Дельфи .


спасибо, с этим всё понятно. Перекодировал без проблем. Только проблема не ушла. В заголовке письма есть такие строчки:


Date: 12/11/2003
Mime-Version: 1.0
Content-Type: text/plain; charset=us-ascii
X-Spam: Not detected
X-Spam: Not detected

В строке Charset= и пишется эта самая пресловутая кодировка. В ней вся загвоздка. Почтовая служба читает кодировку отсюда и автоматически декодирует послание.
Вопрос: как поменять название кодировки в этом месте????
Re[3]: Кодировки при отправке E-Mail через NMSMTP
От: ArtDenis Россия  
Дата: 12.09.03 06:03
Оценка: +1
P>спасибо, с этим всё понятно. Перекодировал без проблем. Только проблема не ушла. В заголовке письма есть такие строчки:
P>Date: 12/11/2003
P>Mime-Version: 1.0
P>Content-Type: text/plain; charset=us-ascii
P>X-Spam: Not detected
P>X-Spam: Not detected

P>В строке Charset= и пишется эта самая пресловутая кодировка. В ней вся загвоздка. Почтовая служба читает кодировку отсюда и автоматически декодирует послание.

P>Вопрос: как поменять название кодировки в этом месте????

Используй компонент TIdSMTP из библиотеки Indy. Charset там указывается в качестве свойства письма.

Денис.
... << RSDN@Home 1.1 beta 1 >>
[ 🎯 Дартс-лига Уфы | 🌙 Программа для сложения астрофото ]
Re[3]: Кодировки при отправке E-Mail через NMSMTP
От: Sinclair Россия https://github.com/evilguest/
Дата: 12.09.03 11:30
Оценка:
Здравствуйте, Paha007, Вы писали:

P>Date: 12/11/2003

P>Mime-Version: 1.0
P>Content-Type: text/plain; charset=us-ascii
P>X-Spam: Not detected
P>X-Spam: Not detected

P>В строке Charset= и пишется эта самая пресловутая кодировка. В ней вся загвоздка. Почтовая служба читает кодировку отсюда и автоматически декодирует послание.

P>Вопрос: как поменять название кодировки в этом месте????
Если TPostMessage не содержит нужных свойств, то попробуй обмануть реальность: в HTML — теле письма внеси тег <META Name="Content-Type" Value = "text/html; charset=win1251"> и без отправляй без всякой перекодировки.
... << RSDN@Home 1.1 beta 2 >>
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[4]: Кодировки при отправке E-Mail через NMSMTP
От: akasoft Россия  
Дата: 12.09.03 14:53
Оценка:
Здравствуйте, Sinclair, Вы писали:

S>Если TPostMessage не содержит нужных свойств, то попробуй обмануть реальность: в HTML — теле письма внеси тег <META Name="Content-Type" Value = "text/html; charset=win1251"> и без отправляй без всякой перекодировки.


А не надо ли при этом указать MIME, boundary и т.п.? Плюс обычные тэги HTML-документа?

Типа, так:

MIME-Version: 1.0
Content-Type: multipart/alternative;
        boundary="----=_NextPart_000_0027_01C37846.FF2737F0"
------=_NextPart_000_0027_01C37846.FF2737F0
Content-Type: text/plain;
        charset="win1251"
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META http-equiv=Content-Type content="text/html; charset=windows-1251">
</HEAD>
<BODY>
Тут наш текст с тэгами оформления.
</BODY>
------=_NextPart_000_0027_01C37846.FF2737F0--
... << RSDN@Home 1.1 beta 2 >>
Re[5]: Кодировки при отправке E-Mail через NMSMTP
От: Sinclair Россия https://github.com/evilguest/
Дата: 14.09.03 12:59
Оценка:
Здравствуйте, akasoft, Вы писали:
A>А не надо ли при этом указать MIME, boundary и т.п.? Плюс обычные тэги HTML-документа?
А это вообще-то вроде как должен TPostMessage сам делать. У него там флажочек есть, который про тип контента. Если руками сразу с уровня MIME начинать, то лесом такие компоненты идут. Без них быстрее будет. А про обычные тэги вроде и так подразумевалось.
... << RSDN@Home 1.1 beta 2 >>
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[6]: Кодировки при отправке E-Mail через NMSMTP
От: Paha007 Россия  
Дата: 15.09.03 00:41
Оценка: 38 (3)
Спасибо всем!
Нашёл-таки решение проблеы.

procedure TForm1.SMail;
begin
if NMSMTP1.Connected then NMSMTP1.DisConnect;

    NMSMTP1.Host := edit1.text;
    NMSMTP1.UserID := edit2.text;
    NMSMTP1.Connect;


    NMSMTP1.ClearParams := true;

    NMSMTP1.SubType := mtPlain;
    NMSMTP1.EncodeType := uuMime;

    NMSMTP1.Charset:='KOI8-R';


    NMSMTP1.PostMessage.FromAddress := edit3.text;

    NMSMTP1.PostMessage.FromName := wintokoi(edit4.text);
    NMSMTP1.PostMessage.ToAddress.Text := ToS;
    NMSMTP1.PostMessage.ToCarbonCopy.Text :='';
    NMSMTP1.PostMessage.ToBlindCarbonCopy.Text := '';
    NMSMTP1.PostMessage.Body.Text :=wintokoi(MText.text);

    NMSMTP1.PostMessage.Attachments.Text := '';
    NMSMTP1.PostMessage.Subject :=wintokoi(Edit5.text);
    NMSMTP1.PostMessage.LocalProgram := '';
    NMSMTP1.PostMessage.Date := '';
    NMSMTP1.PostMessage.ReplyTo := Edit6.text;
    try
     NMSMTP1.SendMail;
    finally
      NMSMTP1.DisConnect;
    end;
end;


Всё дело в жирной строчке, в ней-то и указывается тип кодировки, проблема в том, что в стандартной Delphi-йской помощи этой функции вааще нет
А на самом деле она есть!
Re[7]: Кодировки при отправке E-Mail через NMSMTP
От: ArtDenis Россия  
Дата: 15.09.03 06:10
Оценка: :)
Здравствуйте, Paha007, Вы писали:

P>Спасибо всем!

P>Нашёл-таки решение проблеы.
P>...
P>Всё дело в жирной строчке, в ней-то и указывается тип кодировки, проблема в том, что в стандартной Delphi-йской помощи этой функции вааще нет
P>А на самом деле она есть!

Вот блин! Как вспомню, сколько я с этим делом парился! Нет чтобы заглянуть в заголовочный файл.

2Paha007: большое спасибо!
... << RSDN@Home 1.1 beta 1 >>
[ 🎯 Дартс-лига Уфы | 🌙 Программа для сложения астрофото ]
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.