我有一个相当简单的电子邮件,我需要使用Exchange服务器发送。这在本地工作,但在我发布到服务器时失败。这是我建立交换服务器链接的代码:
var service = new ExchangeService(ExchangeVersion.Exchange2010_SP2); service.UseDefaultCredentials = true; service.AutodiscoverUrl(Config.GetGroupMailbox(),RedirectionUrlValidationCallback);
设置字段后,我只是调用.Send()但没有成功。
这是堆栈跟踪:
Microsoft.Exchange.WebServices.Data.ServiceResponseException:没有邮箱的用户无法使用SendOnly。使用SendAndSaveCopy并在邮箱中指定文件夹ID,以便从没有邮箱的帐户发送项目。
在Microsoft.Exchange.WebServices.Data.ServiceResponse.InternalThrowIfNecessary()
在Microsoft.Exchange.WebServices.Data.ExchangeService.InternalCreateItems(IEnumerable 1 items, FolderId parentFolderId, Nullable
1 messageDisposition,Nullable 1 sendInvitationsMode, ServiceErrorHandling errorHandling)
at Microsoft.Exchange.WebServices.Data.Item.InternalCreate(FolderId parentFolderId, Nullable
1 messageDisposition,Nullable`1 sendInvitationsMode)
在Microsoft.Exchange.WebServices.Data.EmailMessage.InternalSend(FolderId parentFolderId,MessageDisposition messageDisposition)
在CCSSWorkflow.Models.EmailService.Send(EmailObject EmailObject,EmailSent EmailSentObject)
感谢您的帮助/指导,
萨姆
答案 0 :(得分:2)
我找到了问题并解决了。问题出在连接或尝试连接的用户身上。
我已将服务设置为使用默认设置: service.UseDefaultCredentials = true; 这意味着它将尝试以运行该进程的用户身份进行连接。
当我用实际用户ID和密码替换它时,一切正常:
service.UseDefaultCredentials = false;
service.Credentials = new WebCredentials(Config.GetEmailConnectionUserID(),
Config.GetEmailConnectionPassword());