Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
CDO.Message - настроить кодировку либо тело письма брать из файла
|
|||
|---|---|---|---|
|
#18+
Проблема в следующем: есть процедура, она формировала отчет-напоминание и отсылала по почте. Использовала xp_smtp_sendmail (у меня SQL2000 ). Отчет выгружался с помощью bcp в файл и процедура брала текст из файла. Тело отчета - в html. xp_smtp_sendmail. Проблем не было. Через некоторое время на smtp-сервере установили запрет на отсылку без авторизации. Пришлось переползти на CDO.Message . Отсылка заработала, но возникла проблема: Воспроизвести на серверной стороне загрузку тела письма из файла не удалось. Стал вызывать процедуру через exec + конкатенация строк (как тут ). Текст процедуры, отпраляющей почту : Код: plaintext 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. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. В заголовке html кодировка так же указывается. Кодировка устанавливается (комментарий, помеченный -- !!!! в коде). Т.к. она одна, case для определения кодовой страницы писать я не стал. Проблема в следующем : физически письмо приходит в кодировке koi-8. При вызове формирующей процедуры из QA все работает. При вызове процедуры через job c вероятностью примерно 40% приходят знаки вопроса, в остальных случаях письма приходят корректные. В качестве клиента используется в компании The Bat ! и менять это не хотелось бы. Т.к. штатный запуск - раз в сутки, хотелось бы это побороть... Пример с отдельным OLE-объектом для зачитывания тела письма из файла на vbscript я нашел, но - непонятно, можно ли получить ответ от одной sp_OASetProperty и скормить его другой... Хотя - тогда тело было бы в unicode, как bcp формирует, и проблема была бы решена. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2006, 14:02 |
|
||
|
CDO.Message - настроить кодировку либо тело письма брать из файла
|
|||
|---|---|---|---|
|
#18+
Главное - если бы всегда приходили знаки вопроса, я бы понял - неправильно настроен объект, а тут - то приходит корректный текст, то - некорректный... и именно из джоба... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2006, 18:23 |
|
||
|
CDO.Message - настроить кодировку либо тело письма брать из файла
|
|||
|---|---|---|---|
|
#18+
В общем, как всегда. Стоило весь текст, включая текст динамического sql перевести в nvarchar/ntext - и все заработало. Кстати, оказалось, что exec() нормально переваривает nvarchar . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2006, 13:09 |
|
||
|
CDO.Message - настроить кодировку либо тело письма брать из файла
|
|||
|---|---|---|---|
|
#18+
Поторопился... все равно, как оказалось, через раз знаки вопроса приходят.Заметил, что в "хороших" письмах в служебной информации сабжект письма выглядит так : Код: plaintext 1. а в плохих - так : Код: plaintext 1. То есть, он через раз понимает, что кодировка ?koi8-r? , хотя сообщение формирует одна и та же процедура. Тест проводился установкой отправки письма через job раз в минуту в течение 10 минут. Неужели ни у кого никаких мыслей нет ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2006, 13:43 |
|
||
|
CDO.Message - настроить кодировку либо тело письма брать из файла
|
|||
|---|---|---|---|
|
#18+
Ладно, раз все молчат, другой вопрос - из какого файла MSSQL 2000 берет класс CDO.Message ? Следы на msdn.com ведут к cdo.dll , библиотеки такой у меня на машине нет, а CDO.Message работает. И, для верности, @@version Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. На тестовом стоит SP4. На рабочем - SP3, кроме моей системы там стоит еще сторонняя, поэтому я бы с радостью не стал ставить туда SP4, если это возможно. Не уверен, как эта система себя поведет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.12.2006, 12:59 |
|
||
|
CDO.Message - настроить кодировку либо тело письма брать из файла
|
|||
|---|---|---|---|
|
#18+
Нашел пример задания параметров , выставил Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.12.2006, 16:05 |
|
||
|
CDO.Message - настроить кодировку либо тело письма брать из файла
|
|||
|---|---|---|---|
|
#18+
cdosys.dll ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.12.2006, 20:49 |
|
||
|
CDO.Message - настроить кодировку либо тело письма брать из файла
|
|||
|---|---|---|---|
|
#18+
ilya_erЛадно, раз все молчат, другой вопрос - из какого файла MSSQL 2000 берет класс CDO.Message ? Следы на msdn.com ведут к cdo.dll , библиотеки такой у меня на машине нет, а CDO.Message работает. быть такого не может. CDO - это API аутлука для работы с Exchange. То есть у вас должен быть настроен профайл, откуда все установки (в том числе и кодировки) по умолчанию и должны браться. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.12.2006, 21:26 |
|
||
|
CDO.Message - настроить кодировку либо тело письма брать из файла
|
|||
|---|---|---|---|
|
#18+
Были аналогичные проблемы. Пришлось написать standalone EXE на VB6, который и занимается собственно отправкой. В нем это выглядит примерно так (вкратце): Код: plaintext 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.12.2006, 21:42 |
|
||
|
CDO.Message - настроить кодировку либо тело письма брать из файла
|
|||
|---|---|---|---|
|
#18+
LepsikCDO - это API аутлука для работы с Exchange. То есть у вас должен быть настроен профайл, откуда все установки (в том числе и кодировки) по умолчанию и должны браться. Вы путаете CDO и MAPI. В последнем случае в системе действительно должен быть установлен почтовый клиент и настроена учетка почты. Что же касается CDO, то эта библиотека входит в состав винды, начиная с W2K и ничьим API, насколько я помню, не является. В составе MS Exchange идет специализированная версия этой библы, да, но разница между этими версиями не имеет никакого отношения к данному вопросу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.12.2006, 21:47 |
|
||
|
CDO.Message - настроить кодировку либо тело письма брать из файла
|
|||
|---|---|---|---|
|
#18+
ilya_er, нужно задать кодировку в свойстве объекта CDO.Mesage: .BodyPart.Charset = "windows-1251" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.08.2012, 23:04 |
|
||
|
CDO.Message - настроить кодировку либо тело письма брать из файла
|
|||
|---|---|---|---|
|
#18+
-Iriska- , уже почти 6 лет прошло. Думаю им уже это не надо. =) Блин, а в мире столько готовых стандартных OpenSource утилит аля SendMail, что городить огород и тонны и месиво кода просто преступление. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.08.2012, 02:30 |
|
||
|
CDO.Message - настроить кодировку либо тело письма брать из файла
|
|||
|---|---|---|---|
|
#18+
Мне помогло. Спасибо 8-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.04.2014, 04:53 |
|
||
|
CDO.Message - настроить кодировку либо тело письма брать из файла
|
|||
|---|---|---|---|
|
#18+
Mnior -Iriska- , уже почти 6 лет прошло. Думаю им уже это не надо. =) Прошло еще 2 года и мне тоже помогло :-)) Спасибо! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2014, 12:06 |
|
||
|
CDO.Message - настроить кодировку либо тело письма брать из файла
|
|||
|---|---|---|---|
|
#18+
Помогли такие строки -- Установка кодировки для текста --EXEC @hr = sp_OAGetProperty @iMsg, 'TextBodyPart', @BodyPart out --EXEC @hr = sp_OASetProperty @BodyPart, 'Charset', 'windows-1251' -- Установка кодировки для html ---- для html body EXEC @hr = sp_OAGetProperty @iMsg, 'HTMLBodyPart', @BodyPart out EXEC @hr = sp_OASetProperty @BodyPart, 'Charset', 'windows-1251' ---- для html header EXEC @hr = sp_OAGetProperty @iMsg, 'BodyPart', @BodyPart out EXEC @hr = sp_OASetProperty @BodyPart, 'Charset', 'windows-1251' ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.06.2015, 10:50 |
|
||
|
|

start [/forum/topic.php?fid=46&msg=34203686&tid=1690210]: |
0ms |
get settings: |
8ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
51ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
34ms |
get tp. blocked users: |
1ms |
| others: | 207ms |
| total: | 332ms |

| 0 / 0 |
