【问题标题】:Client-side SendEmail-Method doesn't work客户端 SendEmail-Method 不起作用
【发布时间】:2013-02-07 16:52:20
【问题描述】:

我想使用 SharePoint 2013 客户端对象模型 SendEmail-Method 发送电子邮件,但总是收到“必须指定收件人”。错误。我尝试使用不同的电子邮件地址和多个 SharePoint 服务器,但在所有情况下都发生了错误。

示例源代码(C#):

string webUrl = "http://sharepoint.example.com/";

EmailProperties properties = new EmailProperties();
properties.To = new string[] { "email@example.com" };
properties.Subject = "Test subject";
properties.Body = "Test body";

ClientContext context = new ClientContext(webUrl);

Utility.SendEmail(context, properties);

context.ExecuteQuery(); // ServerException thrown here
context.Dispose();

错误信息:

必须指定收件人。

错误类型:

System.InvalidOperationException

服务器堆栈跟踪:

   at System.Net.Mail.SmtpClient.Send(MailMessage message)
   at Microsoft.SharePoint.Utilities.SPUtility.SendEmail_Client(EmailProperties properties)
   at Microsoft.SharePoint.ServerStub.Utilities.SPUtilityServerStub.InvokeStaticMethod(String methodName, XmlNodeList xmlargs, ProxyContext proxyContext, Boolean& isVoid)
   at Microsoft.SharePoint.Client.ServerStub.InvokeStaticMethodWithMonitoredScope(String methodName, XmlNodeList args, ProxyContext proxyContext, Boolean& isVoid)
   at Microsoft.SharePoint.Client.ClientMethodsProcessor.InvokeStaticMethod(String typeId, String methodName, XmlNodeList xmlargs, Boolean& isVoid)
   at Microsoft.SharePoint.Client.ClientMethodsProcessor.ProcessStaticMethod(XmlElement xe)
   at Microsoft.SharePoint.Client.ClientMethodsProcessor.ProcessOne(XmlElement xe)
   at Microsoft.SharePoint.Client.ClientMethodsProcessor.ProcessStatements(XmlNode xe)
   at Microsoft.SharePoint.Client.ClientMethodsProcessor.Process()

这里有什么问题?

【问题讨论】:

    标签: c# email sharepoint-2013 sharepoint-clientobject


    【解决方案1】:

    我认为必须将电子邮件收件人解析为当前 SharePoint 网站用户。因此,您不能使用随机电子邮件地址作为电子邮件收件人。

    【讨论】:

      【解决方案2】:

      尝试使用用户登录名而不是邮件地址;)

      【讨论】:

        【解决方案3】:

        应该是:

        user.LoginName after EnusreUser for Ex:
        User user = clientContext.Web.EnsureUser(strlogonName);
        clientContext.Load(user);
        clientContext.ExecuteQuery();
        
        EmailProperties properties = new EmailProperties();
        properties.To = new string[] { user.LoginName };
        properties.Subject = "Test subject";
        properties.Body = "Test body";
        
        ClientContext context = new ClientContext(webUrl);
        
        Utility.SendEmail(context, properties);
        

        【讨论】:

          猜你喜欢
          • 2017-06-04
          • 2020-10-12
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-04-12
          相关资源
          最近更新 更多