2

I want to send emails using the SharePoint 2013 Client Object Model SendEmail-Method, but I always get an "A recipient must be specified." error. I tried it with different email addresses and several SharePoint servers, but the error occurred in all cases.

Example source (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();

Error message:

A recipient must be specified.

Error type:

System.InvalidOperationException

Server stack trace:

   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()

What's wrong here?

Ondrej Tucny
  • 27,626
  • 6
  • 70
  • 90
user2051498
  • 21
  • 1
  • 2

3 Answers3

3

I think email recipient must be resolved to current SharePoint site user. So you cannot use random email address as email recipient.

0

Try using users logonname instead of mailaddress ;)

0

It should be:

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);
Rizier123
  • 58,877
  • 16
  • 101
  • 156