пробел xp_smtp_sendmail, добавленный к HTML случайным образом

У меня есть proc, где я генерирую маленький документ HTML со ссылкой и отсылаю его через xp_smtp_sendmail proc. Ссылка сгенерирована на основе результатов запроса и длинна. Это работает в большинстве случаев. Однако иногда связь разорвана из-за пробелов, вставляемых в querystring имена переменной, т.е. &Na me=John.

Это могло бы варьироваться между почтовыми клиентами (те же работы ссылки в Gmail, но не мог бы работать в Comcast из-за пробелов. Пробел, кажется, случайным образом вставлен, таким образом, в каждой поврежденной ссылке на электронное письмо пространство могло бы повредить другие querystring переменные. Когда я действительно ПЕЧАТАЮ от proc, ссылка является чистой, никакие пробелы.

Вот мой образец почты proc выполняемый в основном proc (который получает результаты запроса и генерирует HTML для @Message). Пробел, кажется, вставлен независимо от того, кодирую ли я URL или нет.

Заранее спасибо за помощь. Я могу отправить более чистую версию кода, если он не отображен правильно здесь.

.... результаты запроса выше

SET @Message = NULL
SET @Message = @Message +
+ '<br/>Dear ' + @FirstName + ' ' + @LastName + ','
+ '<br/><br/>Recently you took "' + @Title + '". ' 
+ 'In response to the question "What is it?" ' 
+ 'you responded "' + @Response + '".' 
+ '<br/><br/>Following up on previous mailing'
+ '<br/><br/>Please click on the link below'
+ '<br/><br/><a href="' + @Link + '">Please click here</a>'
+ '<br/><br/>plain text'
+ '<br/><br/>plain text,'
+ '<br/><br/>plain text<br/>
plain text<br/>
plain text<br/>
plain text<br/>
plain text<br/>
plain text

EXEC @rc = master.dbo.xp_smtp_sendmail
 @FROM         = 'any@any.com',
 @FROM_NAME    = 'Any User',
 @TO           = @Email,
 @priority     = N'NORMAL',
 @subject      = N'My email',
 @message      = @Message,
 @messagefile  = N'',
 @type         = N'text/html', 
 @attachment   = N'',
 @attachments  = N'',
 @codepage     = 0,
 @server       = 'smtp.server.any'
8
задан Oded 23 February 2010 в 00:27
поделиться

4 ответа

Какова длина ссылки со значениями?

Я предполагаю, что происходит некоторая упаковка, и у вас есть разрыв строки, заменяющийся пробелом.

Он выглядит случайным, поскольку значения различаются по длине, поэтому разделение происходит случайным образом.

Еще одна мысль: вам нужны только теги
.
не требуется (с пробелом или без него) и может способствовать

0
ответ дан 6 December 2019 в 04:33
поделиться

Как насчет включения возврата каретки в код. BR будет возвращать только каретку в HTML, но сам источник не имеет возврата каретки.

0
ответ дан 6 December 2019 в 04:33
поделиться

1 - Проверьте длину создаваемого сообщения и переключитесь на отправку из файла, если длина приближается к 4000 символов.

2 - Вставлять символы cr / lf перед каждым предложением или абзацем.

3 - Убедитесь, что у вас есть cr / lf до и после открытия тега (или просто lf, если это нравится SMTP-серверу).

4 - Поговорите с кем угодно об сокращении длины этой встроенной ссылки - это просто неприемлемо

5 - Спросите о любых параметрах конфигурации на сервере smtp, позволяющих отправлять электронную почту в полностью закодированном двоичном формате (требуются заголовки MIME и кодировка Base64)

6 - Ищите более свежую альтернативу xp_smtp_sendmail, возможно .NET xp

1
ответ дан 6 December 2019 в 04:33
поделиться

Ваша проблема в том, что вы относитесь к mai как к веб-странице. Почта была изобретена во времена текстовых консолей и часто имела ограничение на длину строки 72 символа. Вам необходимо заключить HTML-код в строки длиной не более 72 символов, чтобы гарантировать, что он будет правильно доставлен всем получателям.

Для этого используйте кавычки для печати и оберните строки до 72 символов.

Однако я понятия не имею, как это сделать в SQL Server, кроме как написать процедуру для задания. Вы можете последовать советам в FAQ по ASP .

В основном он говорит о сокращении ссылки с помощью уловок или с помощью служб сокращения ссылок.

-1
ответ дан 6 December 2019 в 04:33
поделиться
Другие вопросы по тегам:

Похожие вопросы: