Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Перенос строки  [new]
Dimych83
Member

Откуда:
Сообщений: 46
Отправляю почту через xp_sendmail. Формирую параметр @message:

SET @message_text = 'Тип: '+@todo+'; Дата: '+CONVERT(varchar,GETDATE(),120)+'; Берег: '+@coast+'; Район: '+@rajon+'; Улица: '+@street+'; Тип объекта: '+@type_obj+'; Цена: '+@cost+'; Контактная информация: '+@descr

Потом указываю его в самой функции:
EXEC master.dbo.xp_sendmail @recipients = 'test@ktk.ru', @subject ='Заявка', @message = @message_text

Но так как само тело письма @message_text содержит длинный текст, хотелось бы разбить его по строкам, чтобы тело письма выглядело так:
Тип: aaaaaa
Дата: bbbbbb
Берег: ссссс

и т.д.

Одним словом как сделать перенос строки, может есть какой-нибудь служебный символ?
7 окт 08, 07:41    [6271922]     Ответить | Цитировать Сообщить модератору
 Re: Перенос строки  [new]
Knyazev Alexey
Member

Откуда: Екб -> Мск
Сообщений: 10234
Блог
declare @str varchar(max)
SET @str = 'String1'+char(13)+'String2'
select @str
7 окт 08, 07:47    [6271927]     Ответить | Цитировать Сообщить модератору
 Re: Перенос строки  [new]
Dimych83
Member

Откуда:
Сообщений: 46
Не помогло почему-то... по справке еще прочитал про CHAR. Но там ничего больше нет...
7 окт 08, 08:20    [6271957]     Ответить | Цитировать Сообщить модератору
 Re: Перенос строки  [new]
daw
Member

Откуда: Муром -> Москва
Сообщений: 7381
>SET @str = 'String1'+char(13)+'String2'

char(10), или уж char(13) + char(10).
13 - это CARRIAGE RETURN.

>Не помогло почему-то...

если проверяете select-ом, установите в ssms режим Results to text.

Posted via ActualForum NNTP Server 1.4

7 окт 08, 08:27    [6271968]     Ответить | Цитировать Сообщить модератору
 Re: Перенос строки  [new]
Добрый Э - Эх
Guest
Dimych83
Не помогло почему-то... по справке еще прочитал про CHAR. Но там ничего больше нет...
Возможно, к тому, что есть ещё не хватает char(10), так как некоторые GUI требуют наличия перевода каретки на новую строку и возврата каретки в начало строки.
7 окт 08, 08:29    [6271972]     Ответить | Цитировать Сообщить модератору
 Re: Перенос строки  [new]
Knyazev Alexey
Member

Откуда: Екб -> Мск
Сообщений: 10234
Блог
daw

если проверяете select-ом, установите в ssms режим Results to text.


в ssms режим Results to text достаточно CHAR(13),
а так-то да..нужен и перенос и возврат коретки
7 окт 08, 08:30    [6271974]     Ответить | Цитировать Сообщить модератору
 Re: Перенос строки  [new]
Dimych83
Member

Откуда:
Сообщений: 46
Спасибо, теперь все нормально!
7 окт 08, 08:37    [6271992]     Ответить | Цитировать Сообщить модератору
 Re: Перенос строки  [new]
Paul Smith
Member

Откуда:
Сообщений: 13
Подскажите, плиз...
Отправляю почту процедурой msdb.dbo.sp_send_dbmail. Указанной выше пользоваться нет возможности.

Формирую строку: select @body = 'aaaa:'+@aaa + char(10) + char(13) + 'bbbb: ' + @bbb
Если перед отправкой сообщения вывести переменную (print @body), то эффект очевиден, перенос есть.

EXEC msdb.dbo.sp_send_dbmail
@profile_name = @profile_name2
, @recipients = @recipients2
, @subject = @subject2
, @body = @body2
, @query_result_header = @query_result_header2
, @query = @query2

Но в пришедшем сообщении на этом месте просто пробел. Получаю почту Outlook2007 SP1

Подскажите, где копать?

Если надо:
Microsoft SQL Server 2005 - 9.00.3073.00 (Intel X86) Enterprise Edition on Windows NT 6.0 (Build 6001: Service Pack 1)
20 фев 09, 20:24    [6846843]     Ответить | Цитировать Сообщить модератору
 Re: Перенос строки  [new]
Mnior
Member

Откуда: Кишинёв
Сообщений: 6723
Извратнуться моно и так:
declare @str varchar(max)
SET @str = 'String1
String2'
select @str
SET @str = @str + '
'    + @str
select @str
20 фев 09, 21:21    [6846903]     Ответить | Цитировать Сообщить модератору
 Re: Перенос строки  [new]
Flying-home
Member

Откуда: kart.vrostove.net
Сообщений: 14954
Paul Smith,

А может, не #10#13, а #13#10?
22 фев 09, 11:59    [6848429]     Ответить | Цитировать Сообщить модератору
 Re: Перенос строки  [new]
Paul Smith
Member

Откуда:
Сообщений: 13
Mnior
Увы, проблема в том, что текстова строка переносы содержит, но в пришедшем письме их нет.
То ли msdb.dbo.sp_send_dbmail их удаляет, то ли Outlook-у что-то другое нужно.


Flying-home
Paul Smith,
А может, не #10#13, а #13#10?

Попробовал - то же самое :(
25 фев 09, 12:24    [6858075]     Ответить | Цитировать Сообщить модератору
 Re: Перенос строки  [new]
daw
Member

Откуда: Муром -> Москва
Сообщений: 7381

а если явно сказать, что @body_format = 'TEXT'

Posted via ActualForum NNTP Server 1.4

25 фев 09, 13:00    [6858302]     Ответить | Цитировать Сообщить модератору
 Re: Перенос строки  [new]
NIIIK
Member

Откуда: Россия, Ростовская область, г. Таганрог
Сообщений: 1295
До кучи )

declare @CR nvarchar(2);
set @CR ='
';

print '111' + @CR + '222';

ещё можно функцию dbo.CR();
#10#13 я писал только в Делфе как перенос строки возврат коретки...
25 фев 09, 14:32    [6858933]     Ответить | Цитировать Сообщить модератору
 Re: Перенос строки  [new]
Paul Smith
Member

Откуда:
Сообщений: 13
daw

а если явно сказать, что @body_format = 'TEXT'

Попробовал - не помогло.

Интересная вещь оказалась. Есть несколько процедур, которые накидывают строки в табличку (кому, сабж, источник и текст - всё varchar), из которой процедура отправки шлёт письма, добавляя между источником и текстом перенос строки.

Так вот некоторые письма, как оказалось, приходят с переносом строки, а некоторые (на которых я экспериментировал) - одной строкой. Разница между письмами только в тексте в полях, из которых составяется письмо.

Магия?
26 фев 09, 13:00    [6863606]     Ответить | Цитировать Сообщить модератору
 Re: Перенос строки  [new]
Козьма Прутков
Member

Откуда: Москва
Сообщений: 186
Paul Smith,
а слабо сравнить, чем отличаются в таблице отправки те сообщения, которые приходят с переносами строки, от тех, где переносы игнорируются?
И второе, попробуйте посмотреть исходник письма, в нем текст видно? он с переносами?
26 фев 09, 13:54    [6864100]     Ответить | Цитировать Сообщить модератору
 Re: Перенос строки  [new]
Paul Smith
Member

Откуда:
Сообщений: 13
Козьма Прутков
Paul Smith,
а слабо сравнить, чем отличаются в таблице отправки те сообщения, которые приходят с переносами строки, от тех, где переносы игнорируются?
И второе, попробуйте посмотреть исходник письма, в нем текст видно? он с переносами?

Там 4 текстовых поля.
Отличатются текстом и длиной.
Про проверку уже писал - перед отправкой вывожу строку из текста письма - в обоих случаях перенос есть.

Попробую, конечно, с длиной строк поиграться. Но уже хочется прсто забить на проблему.
2 мар 09, 01:35    [6875013]     Ответить | Цитировать Сообщить модератору
Между сообщениями интервал более 1 года.
 Re: Перенос строки  [new]
missmand
Guest
Paul Smith, В свойствах Outlook - Почта - Формат сообщения - Сбросить флажок "Удалять дополнительные переносы строк в текстовых сообщениях"
17 мар 14, 13:53    [15738073]     Ответить | Цитировать Сообщить модератору
Между сообщениями интервал более 1 года.
 Re: Перенос строки  [new]
Никита Винокуров
Member [скрыт]

Откуда:
Сообщений: 4
Dimych83,

Для информации подробное описание
23 авг 19, 14:58    [21956535]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить