Wednesday, 25 September 2019

SharePoint Online - Send E-mail from JavaScript using REST API

Script / App.js
-----------------

 <script type="text/javascript" src="//ajax.aspnetcdn.com/ajax/4.0/1/MicrosoftAjax.js"></script>
  <script type="text/javascript" src="https://ajax.aspnetcdn.com/ajax/jQuery/jquery-3.3.1.min.js"></script>
    <script type="text/javascript">
        //SUBJECT OF THE EMAIL
        //var subject = "SUBJECT OF THE MAIL";
        //CONTENT OF THE MAIL - CAN BE HTML OR PLAIN TEXT.
       // var mailContent = "<h3>Some Heading for the mail</h3><p>Content</p><div>Content</div>";
        //AN ARRAY HAVING THE RECIPIENT DETAILS.
        //THE USERNAME/EMAIL-ID SHOULD BE OF A VALID SHAREPOINT USER.
        //EXTERNAL USERS OR EXTERNAL EMAIL IDS ARE NOT SUPPORTED
       // var toList = ["DOMAIN\\USERNAME", "USER1-EMAIL-ID@DOMAIN.COM"]
        var userid = _spPageContextInfo.userId;
        var currentuseremail;
       
  var requestUri = _spPageContextInfo.webAbsoluteUrl + "/_api/web/getuserbyid(" + userid + ")";
  var requestHeaders = { "accept" : "application/json;odata=verbose" };
  $.ajax({
    url : requestUri,
    contentType : "application/json;odata=verbose",
    headers : requestHeaders,
    success : onSuccess,
    error : onError
  });

  function onSuccess(data, request){
    var loginName = data.d.Title;
      currentuseremail = data.d.Email;
        }
                                 
  function onError(error) {
    alert("error");
  }
        function processSendEmails() {
            var toList = [$("#txtRecipients").val()]
              var Emailcc = [currentuseremail]
            var body = $("#txtBody").val();
            var subject = $("#txtSubject").val();
            var mailContent = "<h3>Mail Heading </h3><p>" + body + "</p>";
            // Call sendEmail function     
            sendMail(toList,Emailcc, subject, mailContent).done(function (response) {
                alert("Mail Sent.");
             
            }).fail(function () {
                alert("Error while sending mail.");
            });

        }
        //Send-Email
        function sendMail(toList,Emailcc, subject, mailContent) {

        var restUrl = _spPageContextInfo.webAbsoluteUrl + "/_api/SP.Utilities.Utility.SendEmail",
        restHeaders = {
            "Accept": "application/json;odata=verbose",
            "X-RequestDigest": $("#__REQUESTDIGEST").val(),
            "Content-Type": "application/json;odata=verbose"
        },
        mailObject = {
            'properties': {
                '__metadata': {
                    'type': 'SP.Utilities.EmailProperties'
                },
                'To': {
                    'results': toList
                },
                 'CC': {
                    'results': Emailcc
                },
                'Subject': subject,
                'Body': mailContent,
                "AdditionalHeaders":
                    {
                        "__metadata":
                           { "type": "Collection(SP.KeyValue)" },
                        "results":
                        [
                            {
                                "__metadata": {
                                    "type": 'SP.KeyValue'
                                },
                                "Key": "content-type",
                                "Value": 'text/html',
                                "ValueType": "Edm.String"
                            }
                        ]
                    }

            }
        };
        return $.ajax({
            contentType: "application/json",
            url: restUrl,
            type: "POST",
            data: JSON.stringify(mailObject),
            headers: restHeaders
           
        });
    }

    </script>

Default.aspx
------------------

  <table>
        <tr>
            <td>User Name</td>
            <td>
                <input type="text" name="txtUserName" id="txtUserName" value="" /></td>
         
        </tr>
        <tr>
            <td>Email Id</td>
            <td>
                <input type="text" name="txtRecipients" id="txtRecipients" value="" />               
            </td>
        </tr>
        <tr>
            <td>Subject :
            </td>
            <td>
                <input type="text" name="txtSubject" id="txtSubject" value="" />
            </td>
        </tr>
        <tr>
            <td>Body :

            </td>
            <td>
                <input type="text" name="txtBody" id="txtBody" value="" />

            </td>
        </tr>
        <tr>
            <td>&nbsp;</td>
            <td>
                <input id="Button1" onclick="processSendEmails()"  type="button" value="SendMail" />

             
            </td>
        </tr>         
    </table>

No comments:

Post a Comment

SharePoint online - Get List-item attachments and Display to div

Step 1 : Create a List ex: TestList and attach few images Step 2 : Copy and Pastet the below coding in App.js var  Items =  null ; ...