遇到一个特殊的问题。我有一个SMTP服务器,我需要进行身份验证才能发送邮件。我们有一个C#服务,旨在自动执行此操作,但是当客户端使用HELO与EHLO启动时,服务器主机已将SMTP服务器配置为不允许中继。当客户端使用EHLO时,允许中继。
无论如何都要保持使用SmtpClient并发送EHLO与HELO?
通过电子邮件回复来自SMTP主机提供商的HELO / EHLO中继问题:
“默认情况下,我们的服务器设置为对ehlo命令进行身份验证 不是。它将在本地回复来自主机和发送邮件的helo但是 不接力。“
开发人员发送的应用程序出错:
2011-09-14 14:32:17,764 ERROR ISearchService - 未处理的异常 在调用时被抛出 [AptitudeSolutions.OnCore.Services.ServiceAdapter.Search.SearchServiceAdapter]。 System.Net.Mail.SmtpException:SMTP服务器需要安全 连接或客户端未经过身份验证。服务器响应 是:不允许中继(在您的电子邮件上启用smtp身份验证 客户) System.Net.Mail.RecipientCommand.CheckResponse(SmtpStatusCode statusCode,String response)at System.Net.Mail.SmtpTransport.SendMail(MailAddress sender, MailAddressCollection收件人,String deliveryNotify, SmtpFailedRecipientException&安培;例外) System.Net.Mail.SmtpClient.Send(MailMessage消息)at AptitudeSolutions.OnCore.BusinessProcesses.Scenario.PublicRecordsNotification.AppServices.PublicRecordsNotificationEmailService.SendEmail(字符串 电子邮件,字符串主题,字符串正文)at AptitudeSolutions.OnCore.BusinessProcesses.Scenario.PublicRecordsNotification.AppServices.PublicRecordsNotificationEmailService.SendNewAccountActivationEmailTo(字符串 电子邮件) AptitudeSolutions.OnCore.BusinessProcesses.Scenario.PublicRecordsNotification.ServiceLayer.PublicRecordsNotificationServiceLayer.RequestNewAccount(NewAccountRequest 请求) AptitudeSolutions.OnCore.Services.ServiceAdapter.Search.SearchServiceAdapter.RequestNewNotificationAccount(NewAccountRequest 请求)在SyncInvokeRequestNewNotificationAccount(对象, Object [],Object [])at System.ServiceModel.Dispatcher.SyncMethodInvoker.Invoke(对象 实例,对象[]输入,对象[]&输出) AptitudeSolutions.Framework.DataAccessBase.Utility.Wcf.ServiceAttributes.ExceptionLoggingOperationInvoker.Invoke(对象 实例,对象[]输入,对象[]&输出)
配置文件的相关部分:
<system.net>
<mailSettings>
<smtp from="email@host.com">
<network host="mail.smtphost.com" port="25" userName="username" password="password" defaultCredentials="false" />
</smtp>
</mailSettings>
</system.net>
出于安全考虑,已对某些信息进行了编辑。