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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Отправка юникодного письма с вложениями, Файлы с русскими символами 
:(
    Опции темы
Akella
  Дата 20.8.2009, 10:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


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

Репутация: 4
Всего: 329



Вот код отправки электронного почтового сообщения.

Код

procedure TfmEmail.IdMessage1InitializeISO(var VTransferHeader: TTransfer;
  var VHeaderEncoding: Char; var VCharSet: string);
begin
 VCharSet         := 'UTF-8';
 VHeaderEncoding  := 'B';
 VTransferHeader  := bit8;
end;



procedure TfmEmail.SendMail(aRecordIndex:integer);
Var
 att: TIdAttachmentFile;
 q: TpFibQuery;
 h: TTransfer;
  IdEMailAddressList2: TIdEMailAddressList;
//  sFromAddress: string;
begin
 IdSMTP1.DisConnect;
  IdMessage1.Clear;
  IdMessage1.From.Name    := '';
//  SysLocale.PriLangID := LANG_UKRAINIAN;
  IdMessage1.ContentType  := 'multipart/related; type="multipart/alternative"';
  IdMessage1.CharSet      := 'UTF-8';
  IdSMTP1.ConnectTimeout  := 60*100;

  IdMessage1.From.Address := dbgmail.DataController.Values[aRecordIndex, dbgMailE_MAIL.Index];
  IdMessage1.From.Name    := AnsiToUtf8(dbgmail.DataController.Values[aRecordIndex, dbgMailFROM_NAME.Index]);

  //кому
  IdEMailAddressList2 := TIdEMailAddressList.Create(IdMessage1);
  IdEMailAddressList2.EMailAddresses := AnsiToUtf8(dbgmail.DataController.Values[aRecordIndex, dbgMailRECIPIENT.Index]);
  IdMessage1.Recipients.EMailAddresses := EncodeAddress(IdEMailAddressList2, 'B',  h, 'UTF-8');

  IdMessage1.ReplyTo.EMailAddresses := AnsiToUtf8(dbgmail.DataController.Values[aRecordIndex, dbgMailSMTP_FROM.Index]);
  IdMessage1.Subject    := AnsiToUtf8(dbgmail.DataController.Values[aRecordIndex, dbgMailSUBJECT.Index]);
  IdMessage1.Body.Add(AnsiToUtf8(dbgmail.DataController.Values[aRecordIndex, dbgMailTITLE.Index]));
  IdMessage1.Body.Add(AnsiToUtf8(dbgmail.DataController.Values[aRecordIndex, dbgMailFOOTER.Index]));
  IdMessage1.IsEncoded  := true;
  IdMessage1.Encoding   := meDefault;


  IdSMTP1.Host      := dbgmail.DataController.Values[aRecordIndex, dbgMailSMTP.Index];
  IdSMTP1.Username  := dbgmail.DataController.Values[aRecordIndex, dbgMailSMTP_USER.Index];
  IdSMTP1.Password  := Decrypt(dbgmail.DataController.Values[aRecordIndex, dbgMailSMTP_PASSWORD.Index], k_sm);
  IdSMTP1.UseTLS    := utNoTLSSupport;//utUseImplicitTLS;
  IdSMTP1.Port      := dbgmail.DataController.Values[aRecordIndex, dbgMailSMTP_PORT.Index];
  IdSMTP1.AuthType  := atDefault;

  IdSSLIOHandlerSocketOpenSSL1.Destination  := IdSMTP1.Host + ':' + IntToStr(IdSMTP1.Port);
  IdSSLIOHandlerSocketOpenSSL1.Host         := IdSMTP1.Host;
  IdSSLIOHandlerSocketOpenSSL1.MaxLineAction:= maException;
  IdSSLIOHandlerSocketOpenSSL1.Port         := IdSMTP1.Port;
  IdSSLIOHandlerSocketOpenSSL1.DefaultPort  := 0;
  IdSSLIOHandlerSocketOpenSSL1.SSLOptions.Mode        := sslmUnassigned;
  IdSSLIOHandlerSocketOpenSSL1.SSLOptions.VerifyMode  := [];
  IdSSLIOHandlerSocketOpenSSL1.SSLOptions.VerifyDepth := 0;

  q := TpFibQuery.Create(nil);
  try
    q.Database := DM.fibDB;
    q.Transaction := trMailRead;
    q.SQL.Text    := 'SELECT NAME FROM MAIL_ATTACHMENTS where ID_MAIL = :m_ID';
    q.ParamByName('m_ID').AsInteger := dbgmail.DataController.Values[aRecordIndex, dbgMailID.Index];
    q.ExecQuery;
    q.GoToFirstRecordOnExecute := true;
    while not q.Eof do
      begin
        if FileExists(q.FieldByName('name').AsString) then
          ATT := TIdAttachmentFile.Create(IdMessage1.MessageParts, q.FieldByName('name').AsString);
//          ATT := TIdAttachmentFile.Create(IdMessage1.MessageParts, AnsiToUtf8(q.FieldByName('name').AsString));

        q.next;
      end;//while
  finally
    q.close;
    FreeAndNil(q);
  end;

  IdSMTP1.Connect;

  IdSMTP1.Send(IdMessage1);
  IdSMTP1.DisConnect;

  dbgMail.DataController.Edit;
  dbgMail.DataController.Values[aRecordIndex, dbgMailLAST_DATE.Index] := Date;
  dbgMail.DataController.Post(true);

  FreeAndNil(ATT);
  FreeAndNil(IdEMailAddressList2);
end;


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



Код

Return-Path: <[email protected]>
X-Envelope-To: [email protected]
X-Spam-Status: No, hits=0.0 required=2.0
    tests=TOTAL_SCORE: 0.000
X-Spam-Level: 
Received: from mxb.rambler.ru ([81.19.66.30])
    by .....net.ua
    for [email protected];
    Thu, 20 Aug 2009 10:35:14 +0300
Received: from mailc.rambler.ru (mailc.rambler.ru [81.19.66.27])
    by mxb.rambler.ru (Postfix) with ESMTP id 2DF121CB1C2
    for <[email protected]>; Thu, 20 Aug 2009 11:34:42 +0400 (MSD)
Received: from admincheg (unknown [217.12........])
    (Authenticated sender: [email protected])
    by mailc.rambler.ru (Postfix) with ESMTP id D278C621C9E;
    Thu, 20 Aug 2009 11:34:11 +0400 (MSD)
From: "[email protected]" <[email protected]>
Subject: =?UTF-8?B?0KDQsNGB0YHRi9C70LrQsCDQt9CwINC90LXQtNC10LvRjg==?=
To: "=?UTF-8?B?0KHQtdGA0LPQtdC5INCU0Y/Rh9C10L3QutC+?=" <[email protected]>, "=?UTF-8?B?0KHQtdGA0LPQtdC5INCU0Y/Rh9C10L3QutC+?=" <[email protected]>
Content-Type: multipart/related; type="multipart/alternative"; charset="UTF-8"; boundary="LtMvlqyFqFUjsM=_9RFqN6uEN24rpN3F65"
MIME-Version: 1.0
Date: Thu, 20 Aug 2009 10:34:12 +0000
Message-Id: <[email protected]>
X-EsetId: 992F22265DF02C34C26B


может в этом проблема?
Цитата
Content-Type: multipart/related; type="multipart/alternative";


Может что другое указать вместо "multipart/related; type="multipart/alternative"??
PM MAIL   Вверх
Akella
Дата 20.8.2009, 11:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


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

Репутация: 4
Всего: 329



Отправил на рамблер. Смотрю через вебморду. Текст письма кракозябрами, за то кириллица в имени файла нормально видна  smile

Добавлено через 1 минуту и 8 секунд
Единственный почтовик, по моему - это гугл, который отображает ВСЁ правильно!

Добавлено через 3 минуты и 22 секунды
mail.ru тоже правильно всё показывает.

Это сообщение отредактировал(а) Akella - 20.8.2009, 11:12
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Сети"
Snowy
Poseidon
MetalFan

Запрещено:

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

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

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

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

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


 




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


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

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