1
這裏是問題的簡要說明:報告工作的工作不同,我的本地機器
我有寫在C#
與HTML/CSS
和TSQL
語言的腳本,該腳本應該分發生成的報告對我們每個團隊成員來說,當我在本地計算機上測試時,每個人都可以獲得電子郵件,但是如果我將其作爲我們服務器上的工作計劃,我們只有少數人能夠獲得(我們有一張表用於記錄發送的電子郵件,並且日誌記錄步驟也是腳本中的TSQL存儲過程),我已檢查過表格,並且沒有關於缺少接收者的此類數據記錄,僅限於那些獲得電子郵件的人員,這意味着存儲過程無法工作對於那些沒有收到郵件的會員,以及b elow是登錄表格併發送電子郵件的代碼
public void Main()
{
...code above
try
{
...code above
if (SendMail(sSubject, sBody))
{
Dts.TaskResult = (int)ScriptResults.Success;
}
else
{
Dts.TaskResult = (int)ScriptResults.Failure;
}
Dts.TaskResult = (int)ScriptResults.Success;
}
catch (Exception e)
{
//error handling
}
}
public bool SendMail(string sSubject, string sMessage)
{
try
{
string sEmailSendTo = Dts.Variable["ProjRespEmail"].Value.ToString();
string sEmailSendFrom = Dts.Variables["SqlEmail"].Value.ToString();
if (Dts.Variables["StrClientName"].Value.ToString() != "")
{
using (SqlConnection sqlCon = new SqlConnection("connection name"))
{
sqlCon.Open();
using (SqlCommand sqlCmd = sqlCon.CreateCommand())
{
sqlCmd.CommandText = "name";
sqlCmd.CommandType = CommandType.StoredProcedure;
sqlCmd.Parameters.Add(new SqlParameter("SendingMachine", Environment.MachineName));
sqlCmd.Parameters.Add(new SqlParameter("Recipients", sEmailSendTo));
sqlCmd.Parameters.Add(new SqlParameter("Subject", sSubject));
sqlCmd.Parameters.Add(new SqlParameter("Body", sMessage));
sqlCmd.ExecuteNonQuery();
}
}
}
Dts.Variables["ProjRespEmail"].Value = "";
Dts.Variables["StrProjResponsible"].Value = "";//SqlEmail
Dts.Variables["SqlEmail"].Value = "";
Dts.Variables["StrClientName"].Value = "";
return true;
}
catch (Exception ex)
{
//error handling
return false;
}
}
任何建議將不勝感激。
爲什麼不使用SSRS訂閱,而不是使用SSIS來發送報告? –