Because of it ubiquitous nature, automatic emailing is something that many clients expect. People want to be notified immediately of changes on their sites -- when a new article has been submitted, or a blog comment has been posted. Joomla! already provides some of this functionality out of the box by notifying administrators when a user has registered on their site. You, however, may find yourself needing to implement emailing in your own components. As you may have already guessed, Joomla! provides a very helpful class for this: JMail.

With just a few lines of code, you can send your first email:

# Set some variables for the email message
$subject = "You have a new message";
$body = "Here is the body of your message.";
$to = "This email address is being protected from spambots. You need JavaScript enabled to view it.";
$from = array("This email address is being protected from spambots. You need JavaScript enabled to view it.", "Brian Edgerton");

# Invoke JMail Class
$mailer = JFactory::getMailer();

# Set sender array so that my name will show up neatly in your inbox
$mailer->setSender($from);

# Add a recipient -- this can be a single address (string) or an array of addresses
$mailer->addRecipient($to);

$mailer->setSubject($subject);
$mailer->setBody($subject);

# If you would like to send as HTML, include this line; otherwise, leave it out
$mailer->isHTML();

# Send once you have set all of your options
$mailer->send();

That's all there is to it for sending a simple email. If you would like to add carbon copy recipients, include the following before sending the email:

$mailer->addCC("This email address is being protected from spambots. You need JavaScript enabled to view it.");

# Add a blind carbon copy
$mailer->addBCC("This email address is being protected from spambots. You need JavaScript enabled to view it.");

Need to add an attachment? No problem:

 

$file = JPATH_SITE."/path/to/file.doc";
$mailer->addAttachment($file);

As you can see, it really can't get much simpler or straightforward for sending an email. There are several more methods available in JMail. You should also check out JMailHelper. It provides several functions to help you secure input from users before passing it along in an email. Consider the following:

# Import JMailHelper
jimport('joomla.mail.helper');

$to = JRequest::getVar('to', '', 'post');
$subject = JRequest::getVar('subject', '', 'post');
$body = JRequest::getVar('body', '', 'post');
$from = JRequest::getVar('from', '', 'post');

if (!JMailHelper::isEmailAddress($to) || !JMailHelper::isEmailAddress($from)) :
return false;
endif;

if (!JMailHelper::cleanAddress($to) || !JMailHelper::cleanAddress($from)) :
return false;
endif;

$subject = JMailHelper::cleanSubject($subject);
$body = JMailHelper::cleanText($body);

The above code has checked to make sure that the "to" and "from" email addresses are valid and that the addresses, subject, and body are clean (they do not have any extra headers injected). These checks are important if the emails being send back and forth will be heavily user-controlled.

Next time your client requests email alerts when someone fills out your custom form, don't panic. JMail has done all the hard work for you. Figure what information is going to be sent, and use these few lines of code send it via email.

Login to post comments

advertise with us

Boost your traffic and expand your pool of potential customers

8000 active members

Ready to join Now?

CMS Portal - The free marketplace for submitting Joomla, Drupal, Wordpress, Magento, phpBB, Prestashop, vBulletin, Opencart Templates and more.

FOLLOW US

Email Newsletters

Make sure you don't miss interesting happenings by joining our newsletter program.
konya escort eskisehir escort canakkale escort samsun escort balikesir escort aydin escort hatay escort kahramanmaras escort giresun escort tokat escort
Joomla Templates Free Joomla Templates Virtuemart Templates K2 Templates JoomShopping Templates HikaShop Templates SobiPro Templates OpenCart Themes
Magento Themes Magento Extensions Free Magento Extensions Prestashop Themes Prestashop Modules Magento 2 Themes
bettilt
tempobet