Home » Angularjs » How to invoke mailto in AngularJS controller

How to invoke mailto in AngularJS controller

Posted by: admin November 30, 2017 Leave a comment

Questions:

I’m implementing a simple email feedback feature in angular app. The mail has predefined mail subject and content template. The angular controller need bring up client email client (like invoke “mailto:[email protected]”) and fulfill predefined subject, content template. Any body know how to implement it?

Answers:

Inject $window and use $window.open() method.

Inside controller define…

$scope.sendMail = function(emailId,subject,message){
    $window.open("mailto:"+ emailId + "?subject=" + subject+"&body="+message,"_self");
};

and call it like…

$scope.sendMail("[email protected]","Mail Subject","Mail Body Message");

Questions:
Answers:

use $window.location:

$window.location = "mailto:..."

Questions:
Answers:

location.href works too!

$scope.email = function(item){
    location.href= 'mailto:' + $scope.allemails (array) + '?subject=Subject you want';
}

Note: If you have an array in $scope.allemails, and you will use method .join(', ') – thunderbringer email client will not recognize this as a collection of emails and it will add a new line of ‘To:’ to every email from that array.

Questions:
Answers:

This should open new tab for Google mail or email client, depending on users settings.

In Angular JS: Concatenate string in controller like so:

$scope.mailLink = "mailto:" + $scope.emailId + "?subject=" + $scope.Subject + '&body=' + $scope.bodyText;

html

<a ng-href="{{mailLink}}" target="_blank">Send</a>