2013-07-22 240 views
0

我有一封電子郵件腳本,用於在SSIS中發送電子郵件。不使用電子郵件任務,因爲我無法從郵件任務ping通服務器,並且從電子郵件腳本更容易。而且,這個腳本在許多方面都更好。SSIS電子郵件腳本問題。不發送郵件任務

該電子郵件腳本很簡單,檢查服務器是否存在,驗證電子郵件併發送電子郵件。

問題:在電子郵件腳本的「發件人」行中,我使用我的電子郵件地址,並且當我將包上載到Integration Services服務器並運行它時,電子郵件任務將發送郵件成功。但是,當別人在服務器上運行我的軟件包時,電子郵件任務會成功,但不會發送電子郵件。沒有例外,也沒有任何失敗的總體。當我將「發件人」電子郵件地址切換到他們的電子郵件地址時,他們運行該程序包:它會發送郵件。當我嘗試使用他們的電子郵件地址在發件行中運行它時,它無法發送電子郵件。

我們使用這樣的:

mySmtpClient.Credentials = System.Net.CredentialCache.DefaultNetworkCredentials; 

的crendentials。

所以,我的問題是:有沒有解決這個問題的方法?你認爲這是一個Windows身份驗證問題?如果有解決方法,你可以請我指向一個或提供一個? 謝謝。

+0

什麼是期望的行爲,「發件人:」被更新爲運行該軟件包的人,還是適用於每個人從您的電子郵件地址發送它? –

回答

0

你好銀行出納員,我是鮑勃的朋友,他說我可以使用他的帳戶。誠實。我可能會把錢拿出來,但我會放回去。

這實質上是您的郵件系統和您的SSIS包之間發生的對話。郵件系統不相信Alice有權代表Bob發送電子郵件。爲什麼它默默吞嚥錯誤取決於你的代碼。也許有一種狀態,你不檢查電子郵件沒有發送的信號。如果你想用一些眼睛來審查它,請用你的實際代碼更新你的問題。

有兩種解決方案。第一個,也許最不令人滿意的是,讓From帳戶授權每個可能的用戶。愚蠢的,可怕的,可能違反了人類已知的每一種做法,但它不會導致代碼改變。

「正確」的做法是使發件行與證書一致。您需要一些邏輯來獲取該帳戶並將其分配給「發件人」行。

+0

謝謝你先生。 billinkc :) – DURTAYY

0

找出問題所在。就像billinkc提到的那樣,「正確」的方法。我們有一個硬編碼的「從」行,這是它失敗的原因。我們的軟件包由運行特定軟件包的SQL Job運行。該軟件包具有由於身份驗證不匹配而導致Windows身份驗證問題的電子郵件腳本。運行SQL作業的人與From行電子郵件用戶之間不匹配。因此,他們從來沒有匹配。我們在我們的scritp中添加了一行讓用戶運行作業並使該From用戶成爲用戶的行。因此,解決:)