Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Проблема SSIS Send Email Task: line is malformed or missing @ sign  [new]
Андрей Лесных
Member

Откуда:
Сообщений: 8
Коллеги,

Странная проблема с Send Email Task. Задачка должна отправлять вложенный файл по списку абонентов, сформированному из БД хранимой процедурой. Работает по принципу "Нашли файл, выполнили хранимку, выдернули из базы строку со списком абонентов(dataflow task), присвоили этот список переменной string (Foreach loop), отправили сообщение для <string var> с вложением <file attached>" Абоненты для письма и вложение задаются при помощи expressions для Send Email Task.

На стадии тестирования все было ок - успешно отправляла по списку, формируемому из 10 человек (за раз 1-2 получателя). Во время первого же запуска в продуктиве выдала ошибку и сообщение "To line is malformed or missing @ sign'" message.

Вот тут начинается собственно магия: несколько итераций цикла ForeachLoop она отрабатывает корректно, шлет письма по разным сформированным наборам адресатов, а затем выдает ошибку и падает. Обычно для нескольких конкретных списков. Вытащил на божий свет значение переменной, которая подставляется в поле To - там совершенно точно только корректные адреса. Длина строки 300-400 символов (400 - это оценка "с запасом", реально меньше), только адреса, разделенные точкой с запятой. Никаких лишних пробелов. Никаких обрезаний и лишних символов. Все адреса актуальны (проверил). Не используются списки рассылки и прочие безобразия, только непосредственно емэйлы. Количество адресатов-абонентов обычно 2-10, в любом случае - всегда меньше 15.

На момент, так как оно должно хоть как-то работать, применил обходное решение: поставил MaxErrorCount на задаче отправки =250 (больше, чем максимально возможное количество итераций Foreach Loop, который формирует списки рассылки), и когда оно падает - отправляет другой задачкой письмо на меня, с прикрепленными списком адресатов и файлом. Но это как бы и неправильно, и не вариант - руками досылать то, на чем компонента споткнулась...

Работает на: Windows Server 2003 Enterprise Edition, SQL 2008R2, 64 bit, Visual Studio 2008. Почтовый сервер exchange, его версию навскидку не скажу, но можно выяснить. Да и не в нем дело, вроде как, потому что компонента падает до отправки.

Буду благодарен за любые советы... голову уже сломал, если честно :)
15 дек 11, 07:48    [11768494]     Ответить | Цитировать Сообщить модератору
 Re: Проблема SSIS Send Email Task: line is malformed or missing @ sign  [new]
Андрей Лесных
Member

Откуда:
Сообщений: 8
Сам с собою все еще общаюсь я %)

Опять же - решено. Причина в том, что хранимка формирует и передает корректный адрес, а вот при вставке его в поле TO в Send Email Task оно таки ограничено по длине на 255 символов, и все лишнее просто обрезает.

С толку с самого начала сбило то, что более длинные списки рассылки нормально работали - а оказалось, их тоже обрезало, но "линия отреза" приходилась как раз между адресами и все уходило без ошибок (правда, не всем 8) )

Если кто-то знает, регулируется ли длина поля TO настройками компоненты, то спасибо будет этому человеку. Если нет, придется делать дополнительный цикл, разбирать в нем по адресам выданную хранимкой строку и слать каждому реципиенту отдельно.
26 дек 11, 08:10    [11823883]     Ответить | Цитировать Сообщить модератору
 Re: Проблема SSIS Send Email Task: line is malformed or missing @ sign  [new]
Дедушка
Member

Откуда: Город трёх революций
Сообщений: 5138
Андрей Лесных
Если кто-то знает, регулируется ли длина поля TO настройками компоненты...

в этом таске ограничение в 256.
создайте группу рассылки на почтовом сервере (это его дело).
26 дек 11, 11:44    [11825104]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить