0

私は奇妙な状況にあります。

私の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();

これもうまくいきませんでした。私はここで途方に暮れています。このアプローチを使用することさえ可能ですか?他に何を試すことができますか?

4

1 に答える 1

0

どうやら、これは行うことができません。Outlookで作成ウィンドウを起動し、電子メールの本文をHTMLでプリロードすることで回避しました。

http://msdn.microsoft.com/en-us/library/office/aa171418(v=office.11​​).aspx

于 2013-02-20T15:58:04.553 に答える