Перейти к содержимому

Фотография

кодировка текста писем


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 4

#1 Rumata

Rumata

    Новый участник

  • Members
  • Pip
  • 66 сообщений
  • Город:Астана

Отправлено 25 июня 2008 - 11:30

Здравствуйте!

тут вот такая чтука делаеться...
отправляю письмо а его текст в кракозябре, причём OUTLOOK тему нормально распознаёт
кракозябрами только текст письма
пробовал сохранять исходники скрипта в ANSI и UTF8, и всё равно такаяже картина :(
подскажите как это можно решить
вот сама процедура:
function SendEmail(mFrom, mTo, mSubject, mBody, mAttach);
var
  i, schema, mConfig, mMessage : OleVariant;
begin
  
  try
	schema := 'http://schemas.microsoft.com/cdo/configuration/';
	mConfig := Sys.OleObject('CDO.Configuration');
	mConfig.Fields.Item(schema + 'sendusing') := 2; // cdoSendUsingPort
	mConfig.Fields.Item(schema + 'smtpserver') := 'бла.бла.бла'; // SMTP server
	mConfig.Fields.Item(schema + 'smtpserverport') := 25; // Port number
	// mConfig.Fields.Item(schema + 'sendusername') := ''; // User name (if needed)
	// mConfig.Fields.Item(schema + 'sendpassword') := ''; // User password (if needed)
	mConfig.Fields.Update();
	
  
	mMessage := Sys.OleObject('CDO.Message');
	mMessage.Configuration := mConfig;
	mMessage.From := mFrom;
	mMessage.To := mTo;
	mMessage.Subject := mSubject;
	mMessage.HTMLBody := mBody;
	for i := 0 to GetCSVCount(mAttach) - 1 do
	  mMessage.AddAttachment(GetCSVItem(mAttach, i));
	mMessage.Send();
	Log.Message('Сообщение отправленно!', 'Адресат - '+mTo, pmNormal, debug_attr );
	Result := True;
  except
	Log.Message('Сообщение не отправленно!', '', pmNormal, error_attr );
	Result := False;
  end;
end;

  • 0

#2 modbear

modbear

    Специалист

  • Members
  • PipPipPipPipPip
  • 548 сообщений

Отправлено 25 июня 2008 - 12:19

У меня Outlook показывает письмо без крякозябр, если в коде указать Charset:

function SendEmail(mFrom, mTo, mSubject, mBody, mAttach);
var
  i, schema, mConfig, mMessage : OleVariant;
begin
  try
	schema := 'http://schemas.microsoft.com/cdo/configuration/';

	mConfig := Sys.OleObject('CDO.Configuration');
	mConfig.Fields.Item(schema + 'sendusing') := 2; // cdoSendUsingPort
	mConfig.Fields.Item(schema + 'smtpserver') := 'mail.example.com'; // SMTP server
	mConfig.Fields.Item(schema + 'smtpserverport') := 25; // Port number
	// mConfig.Fields.Item(schema + 'sendusername') := ''; // User name (if needed)
	// mConfig.Fields.Item(schema + 'sendpassword') := ''; // User password (if needed)
	mConfig.Fields.Update();

	mMessage := Sys.OleObject('CDO.Message');
	mMessage.Configuration := mConfig;
	mMessage.From := mFrom;
	mMessage.To := mTo;
	mMessage.Subject := mSubject;
	// mMessage.HTMLBody := mBody;
	mMessage.TextBody := mBody;
	mMessage.BodyPart.Charset := 'utf-8';  // <-------------------

	for i := 0 to GetCSVCount(mAttach) - 1 do
	  mMessage.AddAttachment(GetCSVItem(mAttach, i));

	mMessage.Send();

	Log.Message('Сообщение отправлено!', 'Адресат - ' + mTo);
	Result := True;

  except
	Log.Message('Сообщение не отправлено!', ExceptionMessage);
	Result := False;
  end;
end;

procedure Main;
begin
  SendEmail('from@example.com', 'to@example.com', 'Test', 'Test', '');
  SendEmail('from@example.com', 'to@example.com', 'Тест', 'Тест', '');
end;

  • 0

#3 Genka

Genka

    Профессионал

  • Members
  • PipPipPipPipPipPip
  • 1 328 сообщений
  • ФИО:Геннадий Алпаев
  • Город:Украина, Днепр


Отправлено 25 июня 2008 - 12:54

Я тут свои 5 копеек вставлю.

Разная кодировка темы письма и тела письма - с этой проблемой я встретился впервые в рассылках этого форума. Мне понадобилось около часа чтобы понять, в чем проблема. Я даже создавал такую проблему на сайте Майкрософта с подробным описанием что и как, но эту проблему завернули с комментарием "не будем фиксить".

Там еще проблема в том, что при открытии такого письма и смене кодировки ничего не меняется и прочитать письмо невозможно. Но есть воркэраунд.

Открываете письмо, ставите нужную кодировку, закрываете письмо НЕ СОХРАНЯЯ ИЗМЕНЕНИЙ. Потом еще раз открываете, меняете кодировку - и вуаля!

Похоже, что такая проблема есть только в аутлуке
  • 0

TestComplete для начинающих (видеозаписи курса)

Software Testing Automation Tips (50 вещей, которые должен знать каждый автоматизатор, книга на английском языке)

Онлайн-учебник "Автоматизация тестирования от «А» до «Ы»"
Сборник рецептов по TestComplete (книга на английском языке)
Онлайн-учебник по TestComplete
Онлайн-учебник по SilkTest


#4 serpent

serpent

    Новый участник

  • Members
  • Pip
  • 33 сообщений

Отправлено 25 июня 2008 - 19:09

Здравствуйте!

тут вот такая чтука делаеться...
отправляю письмо а его текст в кракозябре, причём OUTLOOK тему нормально распознаёт
кракозябрами только текст письма
пробовал сохранять исходники скрипта в ANSI и UTF8, и всё равно такаяже картина :(
подскажите как это можно решить
вот сама процедура:

mMessage.HTMLBody := mBody;


А Вы уверены, что правильно указываете кодировку непосредственно в HTML-коде?
Что-то типа
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">

  • 0

#5 Rumata

Rumata

    Новый участник

  • Members
  • Pip
  • 66 сообщений
  • Город:Астана

Отправлено 26 июня 2008 - 04:15

modbear, спасибо помогло

serpent , правильно мой косяк :) я правда переделал чтоб тело письма было текстовое, т.к. мне это не критично. Ради интереса попробовал передавать хтмл, но максимум чего добился так это,то что если ставлю кои8р в кодировке у меня когда письмо приходит во всплывающей подсказке текст читабельный, а при открытии он опять кракозябрами :(
вот я решил не заморачиваться и передавать "текстовое тело" письма :)
  • 0


Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных