Форум программистов, компьютерный форум, киберфорум
Delphi: Сети
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.95/41: Рейтинг темы: голосов - 41, средняя оценка - 4.95
6 / 6 / 2
Регистрация: 25.11.2013
Сообщений: 239
1

Кодировка текста сообщения и темы письма

14.05.2014, 21:22. Показов 7515. Ответов 16
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Создал программу для отправки сообщений на email адреса. Программа отправляет, только вот текст сообщения и тема приходят не русским текстом а разными символами

Delphi
1
2
3
4
5
// Это тема сообщения
IdMessage1.Subject:=edit5.text;
 
// Это текст сообщения
IdMessage1.Body.Text:=Memo2.Text;
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
14.05.2014, 21:22
Ответы с готовыми решениями:

IMSMO. Кодировка темы письма из Outlook
Развернул IBM Mail Support for Microsoft Mail (IMSMO). Установил аддон на стороне клиента,...

Кодировка текста письма
Проблема состоит в том, что после исполнение скрипта отправки пользователю уведомления о смене...

Критерии переноса темы в раздел. Личные сообщения при перемещении темы.
Добрый день. я не могу понять по каким критериям темы сортируются в форуме 1с. вот я создал тему ...

Замена темы письма
Доброго времени суток! Может быть вопрос не много не по теме, но все же. Создал отправку с помощью...

16
349 / 262 / 65
Регистрация: 07.04.2014
Сообщений: 1,603
14.05.2014, 21:31 2
Попробуйте указать кодировку в программе. Например, так:
Delphi
1
idMessage1.CharSet:='UTF-8';
0
6 / 6 / 2
Регистрация: 25.11.2013
Сообщений: 239
14.05.2014, 21:37  [ТС] 3
Выкидывает ошибки
Кодировка текста сообщения и темы письма

У меня Delphi 7
0
349 / 262 / 65
Регистрация: 07.04.2014
Сообщений: 1,603
14.05.2014, 21:41 4
Цитата Сообщение от Chesterfield20 Посмотреть сообщение
У меня Delphi 7
Версия Delphi здесь не причём. Посмотрите на скрин, а лучше на код, внимательно. Кто точку с запятой после оператора указания кодировки ставить будет?
0
6 / 6 / 2
Регистрация: 25.11.2013
Сообщений: 239
14.05.2014, 22:00  [ТС] 5
Цитата Сообщение от Streletz Посмотреть сообщение
Кто точку с запятой после оператора указания кодировки ставить будет?
Вы его и поставили.
Но даже и без точки с запятой ошибки те же самые!

Добавлено через 3 минуты
И при том что в IdMessage1 вводиться и пароль и логи, его что тоже будет на русском выводить?

Добавлено через 12 минут
Может как то в uses указать кодировку?
0
349 / 262 / 65
Регистрация: 07.04.2014
Сообщений: 1,603
14.05.2014, 22:08 6
Но даже и без точки с запятой ошибки те же самые!
Проверьте код, следуя советам отсюда:
missing operator or semicolon
И при том что в IdMessage1 вводиться и пароль и логи, его что тоже будет на русском выводить?
На латиницу CharSet не влияет.
Может как то в uses указать кодировку?
Uses

Не по теме:

IdMessage1 вводиться и пароль
Обычно авторизуются, через IdSMTP.O_o

0
6 / 6 / 2
Регистрация: 25.11.2013
Сообщений: 239
14.05.2014, 22:20  [ТС] 7
Программа запустилась, но тема сообщения без изменений а вот в теле сообщения нету вообще текста
Кодировка текста сообщения и темы письма
0
349 / 262 / 65
Регистрация: 07.04.2014
Сообщений: 1,603
14.05.2014, 22:27 8
Если предложенный выше способ не помогает, то можно попробовать ещё так:
Delphi
1
IdMessage1.Body.Text:=UTF8Encode(IdMessage1.Body.Text);
0
6 / 6 / 2
Регистрация: 25.11.2013
Сообщений: 239
14.05.2014, 22:30  [ТС] 9
Не помогает
0
349 / 262 / 65
Регистрация: 07.04.2014
Сообщений: 1,603
14.05.2014, 22:33 10
Цитата Сообщение от Chesterfield20 Посмотреть сообщение
Не помогает
Значит что-то не так делаете. Код в студию!
0
6 / 6 / 2
Регистрация: 25.11.2013
Сообщений: 239
14.05.2014, 22:36  [ТС] 11
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
unit Unit1;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, IdMessage, IdAntiFreezeBase, IdAntiFreeze,
  IdBaseComponent, IdComponent, IdTCPConnection, IdTCPClient,
  IdMessageClient, StrUtils, IdSMTP;
 
type
  TForm1 = class(TForm)
    Button1: TButton;
    Edit1: TEdit;
    IdSMTP1: TIdSMTP;
    IdAntiFreeze1: TIdAntiFreeze;
    IdMessage1: TIdMessage;
    Memo1: TMemo;
    Edit2: TEdit;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Edit3: TEdit;
    Label4: TLabel;
    Edit4: TEdit;
    Label5: TLabel;
    Edit5: TEdit;
    Label6: TLabel;
    Edit6: TEdit;
    Memo2: TMemo;
    procedure Button1Click(Sender: TObject);
    procedure Memo1Change(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  Form1: TForm1;
var
  S : string;
 
implementation
 
{$R *.dfm}
 
procedure TForm1.Button1Click(Sender: TObject);
begin
idSmtp1.Host:=edit3.text;
IdSmtp1.Port:=25;
IdSmtp1.Username:=edit1.text;
IdSmtp1.Password:=edit2.text;
IdMessage1.Body.Text:=UTF8Encode(IdMessage1.Body.Text);
IdMessage1.Body.Text:=Memo2.Text;
IdMessage1.From.Text:=edit6.text;
IdMessage1.Recipients.EMailAddresses:=Ansireplacestr(S,#13#10,',');
IdMessage1.Subject:=edit5.text;
 
IdSmtp1.Connect();
if IdSmtp1.Connected=true then
IdSmtp1.Send(idmessage1);
IdSmtp1.Disconnect;
end;
 
procedure TForm1.Memo1Change(Sender: TObject);
begin
S:=Memo1.Text;
end;
 
end.
Добавлено через 1 минуту
Memo2 это тело сообщения оно и не приход. А тема сообщения также символами и остается.
0
349 / 262 / 65
Регистрация: 07.04.2014
Сообщений: 1,603
14.05.2014, 22:50 12
Memo2 это тело сообщения оно и не приход.
Потому что перекодировку нужно делать после добавления текста в сообщение, а не до.
Вот вариант перекодировки.
Delphi
1
2
3
idMessage1.CharSet:='UTF-8';
IdMessage1.Body.Text:=Memo2.Text;
IdMessage1.Body.Text:=UTF8Encode(IdMessage1.Body.Text);
По идее, после комбинации обоих способов и поправки (см. абзац выше) должно русифицироваться всё. И Subject, и Name, и само сообщение.
0
6 / 6 / 2
Регистрация: 25.11.2013
Сообщений: 239
14.05.2014, 23:13  [ТС] 13
Всё равно не работает.
А вот тема сообщения такой и остаётся.

Добавлено через 19 минут
Таким образом приходит но всё равно иероглифами. А когда ввожу англо.язычные буквы то всё нормально
Delphi
1
2
[quote="Streletz;6173490"]IdMessage1.Body.Text:=Memo2.Text;
IdMessage1.Body.Text:=UTF8Encode(IdMessage1.Body.Text);[/quote]
0
349 / 262 / 65
Регистрация: 07.04.2014
Сообщений: 1,603
14.05.2014, 23:24 14
Цитата Сообщение от Chesterfield20 Посмотреть сообщение
Всё равно не работает.
А вот тема сообщения такой и остаётся.
Сам только что проверил. Перекодирует как положено.
Кстати, у mail.ru кодировка страницы как раз UTF-8. Поэтому, выбор кодировки правильный.
Видимо, либо Вы снова что-то не так сделали, либо это ошибка в версии Indy, которая у Вас установлена (увы, но пакет этим славится).
Вообще, в своё время, этот код я писал в Delphi 7 с версией Indy, которая идёт с ним по умолчанию. Работало.
Сейчас, запустил в XE4. Тоже работает.
Поэтому, если всё написали правильно, то ошибка скорее всего в технической части.
0
6 / 6 / 2
Регистрация: 25.11.2013
Сообщений: 239
14.05.2014, 23:43  [ТС] 15
Когда я делаю так:
Delphi
1
2
3
4
5
6
7
8
idSmtp1.Host:=smtpserv;
IdSmtp1.Port:=25;
IdSmtp1.Username:=логин;
IdSmtp1.Password:=пароль;
IdMessage1.Body.Text:=сообщение;
IdMessage1.From.Text:=email отправителя;
IdMessage1.Recipients.EMailAddresses:='email';
IdMessage1.Subject:=тема сообщения;
То так работает нормально
И что такое indi?

Добавлено через 2 минуты
У Вас код состоит именно в таком порядке?

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
idSmtp1.Host:=edit3.text;
IdSmtp1.Port:=25;
IdSmtp1.Username:=edit1.text;
IdSmtp1.Password:=edit2.text;
idMessage1.CharSet:='UTF-8';
IdMessage1.Body.Text:=Memo2.Text;
IdMessage1.Body.Text:=UTF8Encode(IdMessage1.Body.Text);
IdMessage1.From.Text:=edit6.text;
IdMessage1.Recipients.EMailAddresses:=Ansireplacestr(S,#13#10,',');
IdMessage1.Subject:=edit5.text;
 
IdSmtp1.Connect();
if IdSmtp1.Connected=true then
IdSmtp1.Send(idmessage1);
IdSmtp1.Disconnect;
Добавлено через 5 минут
У меня стоит Delphi7_Lite для windows7
0
349 / 262 / 65
Регистрация: 07.04.2014
Сообщений: 1,603
15.05.2014, 14:49 16
Цитата Сообщение от Chesterfield20 Посмотреть сообщение
И что такое indi?
Библиотека компонентов, в которую входят, в частности, idMessage и idSMTP.
У меня стоит Delphi7_Lite для windows7
Об этом, по хорошему, нужно было сказать ещё в самом начале.
Дело в том Delphi7_Lite не является классическим и даже официальным дистрибутивом Delphi 7. Более того, он собран вовсе не Borland'ом, а сторонним разработчиком (официальный сайт разработчика).
Поэтому, увы, странное поведение тех вещей, которые нормально работают в случае официального дистрибутива, в Lite совершенно не удивительно.
0
6 / 6 / 2
Регистрация: 25.11.2013
Сообщений: 239
15.05.2014, 18:20  [ТС] 17
Так а какую версию лучше всего скачать для 7 венды.
0
15.05.2014, 18:20
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
15.05.2014, 18:20
Помогаю со студенческими работами здесь

Изменение темы письма с помощью Delphi
Подскажите пожалуйста, если возможность изменять заголовки писем (к примеру тему письма) на сервере...

Почтовая форма с автоматическим получением темы письма
Добрый вечер, форумчане. Обрисую ситуацию на примере. Есть три кнопки: А, В, С. При нажатии на...

Кодировка письма
При первом запуске Денвера...проверяю правильность кадировки....пишу Русский язык...нажимаю на...

Кодировка письма
Привет всем. Не могу понять в чем проблема. Отправляю письмо, все отображается нормально, кроме...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru