Trying to attach a pdf file in an email, currently using SharePoint REST API to send email from AngularJS service module.
Have shared the code snippet below.
Please help me if you have some idea to do it. Here i don't have any issues with the code.
Flow of the application: View (HTML form button click) -> Controller -> Service -> BaseSvc
BaseSvc:
(function () {
angular.module("peopleApp")
.factory("baseSvc", ["$http", "$q", function ($http, $q) {
var baseUrl = _spPageContextInfo.webAbsoluteUrl;
var sendEmailRequest = function (emailFrom,emailBody,emailTo,emailSub)
{
var deferred = $q.defer();
//Get the relative url of the site
var urlTemplate = baseUrl + "/_api/SP.Utilities.Utility.SendEmail";
$http({
contentType: 'application/json',
url: urlTemplate,
type: "POST",
data: JSON.stringify({
'properties': {
'__metadata': {
'type': 'SP.Utilities.EmailProperties'
},
'From': emailFrom,
'To': {
'results': [emailTo]
},
'Body': emailBody,
'Subject': emailSub
}
}),
headers: {
"Accept": "application/json;odata=verbose",
"content-type": "application/json;odata=verbose",
"X-RequestDigest":document.getElementById("__REQUESTDIGEST").value
},
}).success(function(result) {
deferred.resolve(result);
}).error(function(result, status) {
deferred.reject({
error: result,
status: status
})
});
return deferred.promise;
};
return {
sendEmailRequest: sendEmailRequest
};
}]);
})();
Service:
"use strict";
(function(){
angular.module("peopleApp")
.factory("peopleService",["baseSvc",function(baseService){
var listEndPoint = '/_api/web/lists';
var sendEmail = function(){
eBody = 'Dear member you got mail from SharePoint',
eSub = 'Email from REST API';
// Call sendEmail function
return baseService.sendEmailRequest(eFrom, eBody, eTo, eSub);
};
return{
sendEmail:sendEmail
};
}]);
})();
Controller:
"use strict";
(function () {
angular.module("peopleApp")
.controller("allPeopleCtrl", ["$scope", "peopleService","$location",
$scope.sendEmail=function (){
//var doc = pdfMake.createPdf(docDefinition);
peopleService.sendEmail()
.then(function (response) {
console.log(response);
$location.path("/");
});
};
$scope.downloadPdf = function () {
var employees = $scope.people;
var empList = [];
angular.forEach(employees, function(value, key) {
empList.push({Firstname: value.FirstName, Lastname: value.LastName, Address: value.Address});
});
var items = empList.map(function(item) {
return [item.Firstname, item.Lastname, item.Address];
});
var docDefinition = {
pageOrientation: 'landscape',
content: [
{ text: 'Employees List'},
{
style: 'styleTable',
table:
{
body:
[
[{ text: 'Firstname', style: 'header' },
{ text: 'Lastname' , style: 'header' },
{ text: 'Address' , style: 'header' },
],
].concat(items)
}
}
],
styles: {
header: {
bold: true,
color: '#000',
fontSize: 11
},
styleTable: {
color: '#666',
fontSize: 10
}
}
};
pdfMake.createPdf(docDefinition).download("EmployeesNew.pdf");
};