20

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?

3
  • 2
    possible duplicate of Sending emails with Javascript Commented Dec 3, 2014 at 21:37
  • 2
    You could probably wrap it into a directive. Here's one someone else put together. Commented Mar 20, 2015 at 15:15
  • 3
    If you now have an answer to this question, you should enter the answer below (not as part of the question) and mark it as the answer, so it is immediately clear to other StackOverflow users this question has already been solved. Commented Apr 27, 2015 at 15:14

4 Answers 4

18

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");
Sign up to request clarification or add additional context in comments.

Comments

5

use $window.location:

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

1 Comment

this doesn't open not needed new browser tab, while location.open() does. Seems better if you are sure that user need a external mail client to be opened.
2

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>

Comments

1

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.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.