c# - 通过交换服务器发送电子邮件问题。 (system.net.mail 与 microsoft.exchange.webservices)

标签 c# asp.net exchange-server

我正在为我的公司开发一个网络应用程序。其中一部分要求内部用户填写表格,并代表该用户发送电子邮件。一切都在公司内部。我搜索并发现了两个可能的路由旧的 system.net.mail 和更新的 microsoft.exchange.webservices,但似乎我们的交换服务器需要凭据。我只能获取用户的登录名和他的电子邮件地址login+“@company.com”。我怎样才能完成这个工作?

下面是我使用smtp(system.net.mail)的代码,但它不起作用。

            string[] username =System.Security.Principal.WindowsIdentity.GetCurrent().Name.Split('\\');
            string email = username[1] + "@company.com";
            MailAddress from = new MailAddress(email);
            MailAddress to = new MailAddress("<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="b3c0dcded6dcddd6f3d0dcdec3d2ddca9dd0dcde" rel="noreferrer noopener nofollow">[email protected]</a>");
            MailMessage message = new MailMessage(from, to);                
            message.Subject = "testmail";
            message.Body = "<h>testmail</h>";
            message.IsBodyHtml = true;
            SmtpClient client = new SmtpClient();
            client.DeliveryMethod = SmtpDeliveryMethod.Network;
            client.Send(message); 

最佳答案

SmtpClient 要求您直接指定 SMTP 服务器,或者您拥有正确的应用程序/计算机配置设置以自动检测服务器。您的代码隐式选择第二个选项,我怀疑您在应用程序/机器配置中没有正确的设置。 Exchange 在其默认配置中不支持 SMTP,据我所知,因此除非熟悉 Exchange 服务器的人知道 SMTP 已配置并且可以为您提供正确的地址,否则 SmtpClient 可能已退出。

Exchange Web Services(又名 EWS)可能是更好的答案,但它并不是一个真正好的答案。为了使用 Exchange Web 服务,您需要以下之一:

1) 用户的域、用户名和密码,以便您可以将正确的 NetworkCredential 传递给 EWS。就您而言,这可能意味着用户必须在您的表单中输入密码,这可能会破坏您的要求。

2) 进程运行的用户(在 Web 应用程序中,IIS 的应用程序池标识)必须具有以相关用户身份发送邮件的权限。

3) 如果您可以使用 ASP.NET 身份验证来模拟用户(这仅是 LAN 应用程序中的一个好方法),那么您可以有效地退回到选项 (2),因为现在您将与EWS 作为用户,显然将有权从自己的地址发送邮件。

如您所见,正确的方法很大程度上取决于您的 Exchange/Active Directory/LAN 设置。

关于c# - 通过交换服务器发送电子邮件问题。 (system.net.mail 与 microsoft.exchange.webservices),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14881555/

相关文章:

c# - 应将包装的 EF 实体保存在哪个类中?

c# - 用 rhino mocks 对一个属性进行 stub 两次

asp.net - 在 Azure 中实现全文搜索有哪些可能的解决方案?

asp.net - 我如何设置我的 ASP.NET 项目来查找我的文件?

ios - ics 文件 - 无法在 iOS7 中打开附加的 .ICS 文件

c# - HttpClient 通过 PostAsync 上传文件的奇怪行为

c# - 当我将我的用户控件拖到设计 View 上时,Visual Studio 引发错误

asp.net - ASP.NET 中的 iPhone Web 应用程序开发 - 从哪里开始?

java - 有没有办法通过 API 在 MS Exchange Server 中创建帐户

c# - 如何获得任务优先级