14.07.2010, 16:09 | #1 |
Участник
|
делаю отсылку письма.
текст которого заполняется navision. если заполнения в виде OutlookMsg.HTMLBody := 'здесь текст больше 1024 символов' то в письмо все переходит. Делаю еще перенос строк, т.к. outlook не хочет воспринимать строки длиннее 260 символов. дело в том что в разном случае необходимо делать разное количество строк, поэтому делаю по схеме repeat OutlookMsg.HTMLBody :=OutlookMsg.HTMLBody+'здесь текст'; until = условие; в этом случае происходит переполнение, выдает, что длина текстовой строки превосходит размер буфера строки. Как это можно обойти? |
|
14.07.2010, 17:14 | #2 |
Участник
|
|
|
15.07.2010, 10:55 | #3 |
Участник
|
А сначала сформировать полный правильный текст (с переносом) в строке Navision, а уже потом единой строкой присвоить письму?
|
|
15.07.2010, 12:42 | #4 |
Участник
|
Цитата:
Не понимаю смысла данной конструкции. Как с помощью этого ты перевод строки делаешь? в примере просто это не дописал. насчет сформировать вначале текст, потом присвоить. во-первых в зависимости от условий текст может быть разной длинны. во-вторых если формировать отдельно исходя из условий, то как сделать присвоение OutlookMsg.HTMLBody := 'сформированный текст'??? OutlookMsg.HTMLBody имеет тип text, поэтому воспользоваться BigText не удастся, покрайнемере я не знаю как это реализовать. И где хранить сформированный текст, если текстовая переменная не может содержать текст больше 1024 символа. Есть идея типа все формировать в текстовом файле отдельно, с помощью OutStream, а потом оттуда одним махом присвоить это все OutlookMsg.HTMLBody. Только не знаю как это реализовать? |
|
16.07.2010, 10:37 | #5 |
Участник
|
|
|
16.07.2010, 12:06 | #6 |
Участник
|
можно, конечно и так как вариант, но это не совсем то что хотелось.
а можно что-нибудь сообразить с использованием sql server? Вроде что-то попадалось на глаза, может кто-нибудь знает такое решение? |
|
16.07.2010, 12:56 | #7 |
Участник
|
Не знаю, подойдет ли Вам такой вариант, но я делал следующим образом.
Создал таблицу для очереди из писем (что-то наподобие таблицы 5935), с полем Body типа BLOB, в которое записывается сообщение в html-формате. На SQL-сервере написал хранимку для отправки писем из этой очереди с помощью компоненты Database Mail, ну и соответственно настроил джоб для ее вызова с заданной периодичностью. В принципе, при необходимости это хранимку можно вызывать и непосредственно из Нава. В общем, все сводится к вызову процедуры sp_send_dbmail: EXEC @result = msdb.dbo.sp_send_dbmail @profile_name = @Profile, @recipients = @ToAddress, @copy_recipients = @CopyToAddress, @body_format = 'HTML', @subject = @SubjectLine, @body = @BodyBlob |
|
16.07.2010, 16:26 | #8 |
Участник
|
Цитата:
Сообщение от chebv
Не знаю, подойдет ли Вам такой вариант, но я делал следующим образом.
Создал таблицу для очереди из писем (что-то наподобие таблицы 5935), с полем Body типа BLOB, в которое записывается сообщение в html-формате. На SQL-сервере написал хранимку для отправки писем из этой очереди с помощью компоненты Database Mail, ну и соответственно настроил джоб для ее вызова с заданной периодичностью. В принципе, при необходимости это хранимку можно вызывать и непосредственно из Нава. В общем, все сводится к вызову процедуры sp_send_dbmail: EXEC @result = msdb.dbo.sp_send_dbmail @profile_name = @Profile, @recipients = @ToAddress, @copy_recipients = @CopyToAddress, @body_format = 'HTML', @subject = @SubjectLine, @body = @BodyBlob
__________________
Want to believe... |
|