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

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

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

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

Delphi
1
2
3
4
5
// Это тема сообщения
IdMessage1.Subject:=edit5.text;
 
// Это текст сообщения
IdMessage1.Body.Text:=Memo2.Text;
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
14.05.2014, 21:22
Ответы с готовыми решениями:

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

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

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

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

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

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

Не по теме:

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

0
 Аватар для Chesterfield20
6 / 6 / 2
Регистрация: 25.11.2013
Сообщений: 239
14.05.2014, 22:20  [ТС]
Программа запустилась, но тема сообщения без изменений а вот в теле сообщения нету вообще текста
0
349 / 262 / 65
Регистрация: 07.04.2014
Сообщений: 1,603
14.05.2014, 22:27
Если предложенный выше способ не помогает, то можно попробовать ещё так:
Delphi
1
IdMessage1.Body.Text:=UTF8Encode(IdMessage1.Body.Text);
0
 Аватар для Chesterfield20
6 / 6 / 2
Регистрация: 25.11.2013
Сообщений: 239
14.05.2014, 22:30  [ТС]
Не помогает
0
349 / 262 / 65
Регистрация: 07.04.2014
Сообщений: 1,603
14.05.2014, 22:33
Цитата Сообщение от Chesterfield20 Посмотреть сообщение
Не помогает
Значит что-то не так делаете. Код в студию!
0
 Аватар для Chesterfield20
6 / 6 / 2
Регистрация: 25.11.2013
Сообщений: 239
14.05.2014, 22:36  [ТС]
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
Memo2 это тело сообщения оно и не приход.
Потому что перекодировку нужно делать после добавления текста в сообщение, а не до.
Вот вариант перекодировки.
Delphi
1
2
3
idMessage1.CharSet:='UTF-8';
IdMessage1.Body.Text:=Memo2.Text;
IdMessage1.Body.Text:=UTF8Encode(IdMessage1.Body.Text);
По идее, после комбинации обоих способов и поправки (см. абзац выше) должно русифицироваться всё. И Subject, и Name, и само сообщение.
0
 Аватар для Chesterfield20
6 / 6 / 2
Регистрация: 25.11.2013
Сообщений: 239
14.05.2014, 23: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
Цитата Сообщение от Chesterfield20 Посмотреть сообщение
Всё равно не работает.
А вот тема сообщения такой и остаётся.
Сам только что проверил. Перекодирует как положено.
Кстати, у mail.ru кодировка страницы как раз UTF-8. Поэтому, выбор кодировки правильный.
Видимо, либо Вы снова что-то не так сделали, либо это ошибка в версии Indy, которая у Вас установлена (увы, но пакет этим славится).
Вообще, в своё время, этот код я писал в Delphi 7 с версией Indy, которая идёт с ним по умолчанию. Работало.
Сейчас, запустил в XE4. Тоже работает.
Поэтому, если всё написали правильно, то ошибка скорее всего в технической части.
0
 Аватар для Chesterfield20
6 / 6 / 2
Регистрация: 25.11.2013
Сообщений: 239
14.05.2014, 23:43  [ТС]
Когда я делаю так:
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
Цитата Сообщение от Chesterfield20 Посмотреть сообщение
И что такое indi?
Библиотека компонентов, в которую входят, в частности, idMessage и idSMTP.
У меня стоит Delphi7_Lite для windows7
Об этом, по хорошему, нужно было сказать ещё в самом начале.
Дело в том Delphi7_Lite не является классическим и даже официальным дистрибутивом Delphi 7. Более того, он собран вовсе не Borland'ом, а сторонним разработчиком (официальный сайт разработчика).
Поэтому, увы, странное поведение тех вещей, которые нормально работают в случае официального дистрибутива, в Lite совершенно не удивительно.
0
 Аватар для Chesterfield20
6 / 6 / 2
Регистрация: 25.11.2013
Сообщений: 239
15.05.2014, 18:20  [ТС]
Так а какую версию лучше всего скачать для 7 венды.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
15.05.2014, 18:20
Помогаю со студенческими работами здесь

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru