Вы могли бы сделать что-то вроде этого.
//set string builder to create html for email. This will be
//set to a string variable in your ssis package
System.Text.StringBuilder objMsg = new System.Text.StringBuilder();
objMsg.Append("<html><head><style type='text/css'>table td {border: solid 1px black; padding-left: 10px; padding-right: 10px;}</style></head><body><div style='font-family: tahoma, geneva, verdana; font-size: 10pt;'>");
objMsg.Append("<p>The following table contains files that do not match the required format.</p>");
objMsg.Append("</div></body>");
string[] files = Directory.GetFiles("directory");
foreach (string file in files)
{
// if extension is invalid then append table for html email payload
if (Path.GetExtension(file).ToLower() == ".txt" || Path.GetExtension(file).ToLower() == ".csv")
{
objMsg.Append("<p style='margin-left: 30px;'>Details:</p><table style='margin-left: 30px; font-family: monospace; font-size: 9pt; text-align: right; width: 5in;'><tr style='background-color: silver; color: white; font-weight: bold;'><td style='width: 100%'>File Name</td></tr>");
objMsg.Append("<tr>");
objMsg.Append("<td>" + Path.GetFileName(file) + "</td>");
objMsg.Append("</tr>");
File.Move(file, "errordirectory" + Path.GetFileName(file));
}
}
Dts.Variables["your user variable here"].value = objMsg.ToString();
Приносим извинения за нестандартное форматирование. Я старался сделать это быстро, находясь на работе.
Что это будет делать, так это цикл через файл в исходном каталоге и добавить запись в объект строкового построителя, который в конечном итоге приведет к созданию таблицы в html с ведущим сообщением, которое гласит: «Следующая таблица содержит файлы, которые не совпадают требуемый формат ".
Внутри оператора If он также перемещает файлы, идентифицированные в новый каталог.
После того, как вы запустили этот шаг, вы можете назначить строковую переменную, которую вы добавили html, в качестве тела вашего шага электронной почты.
Прежде, чем я отвечу, вы знакомы с C#, и вам разрешено использовать задачи скрипта в вашем процессе. Я спрашиваю, потому что я знаю, что некоторые места очень непреклонны в использовании только встроенных инструментов при работе в ssis. – SFrejofsky
Да, я знаком с C#, и мне разрешено использовать его. Благодаря! – Dhruba