0

我有一个电子邮件脚本,用于在 SSIS 中发送电子邮件。不使用电子邮件任务,因为我无法从邮件任务中 ping 服务器,并且从电子邮件脚本中更容易。此外,该脚本在许多方面都好得多。

这个电子邮件脚本很简单,检查服务器是否存在,验证电子邮件,然后发送电子邮件。

ISSUE:在电子邮件脚本的“发件人”行中,我使用了我的电子邮件地址,当我将包上传到 Integration Services 服务器并运行它时,电子邮件任务成功发送邮件。但是,当其他人在服务器上运行我的包时,电子邮件任务成功但没有发送电子邮件。没有抛出异常,也没有总体上的失败。当我将“发件人”电子邮件地址切换到他们的电子邮件地址时,他们运行包:它发送邮件。当我尝试在 from 行中使用他们的电子邮件地址运行它时,它无法发送电子邮件。

我们使用这个:

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

用于凭证。

所以,我的问题是:有解决方法吗?您认为这是 Windows 身份验证问题吗?如果有解决方法,您能指导我找到一个或提供一个吗?谢谢你。

4

2 回答 2

0

银行柜员你好,我是 Bob 的朋友,他说我可以使用他的帐户。诚实。我可能会把钱拿出来,但我会放回去。

这本质上是您的邮件系统和您的 SSIS 包之间发生的对话。邮件系统不相信 Alice 有权代表 Bob 发送电子邮件。为什么它默默地吞下错误取决于您的代码。也许有一个您没有检查的状态表明电子邮件未发送。如果您想要一些眼睛来查看它,请使用您的实际代码更新您的问题。

有两种解决方案。第一个,可能也是最不同意的,是让From帐户授权每个可能的用户。愚蠢,可怕,可能违反了人类已知的所有做法,但它不需要更改代码。

“正确”的方法是使 From 行与 Credentials 一致。您将有一些逻辑来获取帐户并将其分配给 From 行。

于 2013-07-22T18:10:22.310 回答
0

想通了这个问题。就像 billinkc 提到的那样,“正确”的方法。我们有一个硬编码的“发件人”行,这就是它失败的原因。我们的包由运行特定包的 SQL 作业运行。该软件包的电子邮件脚本由于身份验证不匹配而出现 Windows 身份验证问题。运行 SQL 作业的人和发件人行电子邮件用户之间不匹配。因此,他们从未匹配过。我们在脚本中添加了一行,让用户运行作业并使其成为 From 行用户。因此,解决了:)

于 2013-07-31T18:23:08.977 回答