私は奇妙な状況にあります。
私のWebサイトでは、データベースにアクセスするためにラボアカウントを偽装していますが、フロントエンドではWindows認証を許可しています。つまり、HttpContext.Current.User.Identity.Name.Split('\')1は、ウェルカムメッセージを印刷できるように、サイトを表示しているユーザーの名前を示しますが、Environment.Usernameのようなものは'labaccount'を示します。 。
明確にするために、サーバーのIISマネージャー->基本設定->接続先... = labaccountユーザー名/パスワード、およびサイトのweb.config:
<configuration>
<connectionStrings>
<add name="DatabaseConnectionString" connectionString="blahblahblah" providerName="System.Data.SqlClient" />
</connectionStrings>
<system.web>
<compilation debug="false" targetFramework="4.0" />
<customErrors mode="Off" />
<identity impersonate="true" />
</system.web>
<system.webServer>
<validation validateIntegratedModeConfiguration="false" />
</system.webServer>
</configuration>
今、ウェブサイトで、送信者がラボアカウントではなく、サイトを表示しているユーザーである必要があることを除いて、一連の人々に電子メールを送信する方法が必要です。'mailFrom'の送信者をラボアカウントに設定すると、すべてが期待どおりに機能しますが、HttpContext.Current.Userに変更すると、'メールボックスが利用できませんというエラーが表示されます。サーバーの応答は次のとおりです。5.7.1クライアントにはこの送信者として送信する権限がありません。メールを送信するコードの一部は次のとおりです。
MailMessage mail = new MailMessage(mailFrom, mailTo, subject, null);
mail.IsBodyHtml = true;
mail.Body += mailBody;
SmtpClient smtpClient = new SmtpClient("smtphost");
smtpClient.Credentials = CredentialCache.DefaultNetworkCredentials;
smtpClient.Send(mail);
これは機能しないので、ここで見たものに基づいて、このようなことを試してみました:
MailMessage mail = new MailMessage(mailFrom, mailTo, subject, null);
mail.IsBodyHtml = true;
mail.Body += mailBody;
SmtpClient smtpClient = new SmtpClient("smtphost");
smtpClient.UseDefaultCredentials = false;
WindowsImpersonationContext impersonationContext;
impersonationContext = ((WindowsIdentity)HttpContext.Current.User.Identity).Impersonate();
smtpClient.Send(mail);
impersonationContext.Undo();
これもうまくいきませんでした。私はここで途方に暮れています。このアプローチを使用することさえ可能ですか?他に何を試すことができますか?