I would like to know a good user friendly, easy to setup and flexible way to send automated emails to users. This will be in response to an event triggered by a user. I guess it does not matter what it is for. Just need a good way to send system emails, which is widely used.
Only using Rules may not be sufficient
The Rules module, as suggested in the previous answer, is indeed capable to perform these Rules Actions:
- Send Mail.
- Send mail to all users of a role.
However, if you have not installed any other modules (that integrate with Rules), that's really it (eg Send HTML e-mail is only available if you also install some other module which integrates with Rules).
As per the "most flexible way to send eMails"-part of the question, Rules is only a part of the answer. I recommend you to also have a look at the Message Stack. These are the basic components and dependencies of it:
Some more details about the Message-related modules (=quotes are from the module's project page):
The Message module is the core of the message stack. It enables logging and displaying system events in a number of different use cases. Events that are recorded over time are sometimes call activity streams. Exportable messages subtypes can be created for different use cases with custom fields and display (view) modes.
This module provides a method for sending a message via a notifier plugin. Message Notify comes with plugins for email and SMS and may be extended to other transport mechanisms as required.
With this module, users who subscribe to content will be notified when events occur that involve that content. The module leverages the Flag module, which provides a subscribe functionality to users.
Quite a few popular Drupal distributions already adopted to this Message Stack, Open Atrium is one of them.
If you'd rather look at an existing module as an example, then checkout the 7.x-4.x version of the Answers module (disclosure: I'm a co-maintainer) and its Answers Notification sub-module. This sub-module allows logged in users to subscribe to selected questions, so that they receive notifications (using the Message Stack) when Questions receive Answers.
Create a Message archive (audit trail)
By using the Message module, you automagically also create an archive of all Messages. Which is very handy in cases such as when a user claims to never have received some eMail. In such cases, with only Rules, think about how you'd proof that some eMail was mailed somewhere in the past ... as compared to using Message and just bring up that message again ...
Combining Rules and Message
Moreover, by using the technique of Replacement tokens, it's possible to create your own Message-"tokens" using ... Rules! If these Replacement Tokens don't mean anything to you (ie you don't understand what they are really about), then head over to the answer to What's the purpose of "Replacement tokens" of a Message type? for (way) more details on that.
I think the most easy and user friendly way for you is to use Rules module.
Follow next steps to set your mail.