Overview
PHPMailer allows you to send email from your site via SMTP. Visit PHPMailer’s GitHub page for further details on what it has to offer.
This article explains how to install PHPMailer on a Shared server. If your website is on a VPS or Dedicated server, view the following article instead.
In the following examples, username would be your Shell user and example.com your website.
Installing PHPMailer
- Log into your server via SSH.
- Make sure you're in your user's home directory.
[server]$ cd ~
- Download the zip file from GitHub.com.
[server]$ wget https://github.com/PHPMailer/PHPMailer/archive/master.zip
- Unzip the file.
[server]$ unzip master.zip
- Rename this directory.
[server]$ mv PHPMailer-master PHPMailer
Basic code example for email hosted at DreamHost
Insert the following code into a PHP file.
You only need to update the code in bold.
username — Make sure to change the 'username' field to your actual shell username. You can also view this by running the following command.
[server]$ echo $USER username
Host — If you're sending from a DreamHost address, you should only use smtp.dreamhost.com. If you are using a Gmail address, use smtp.gmail.com.
Username and setFrom must both be an email on the domain you're sending from.
<?php // Import PHPMailer classes into the global namespace // These must be at the top of your script, not inside a function use PHPMailer\PHPMailer\PHPMailer; use PHPMailer\PHPMailer\Exception; require '/home/username/PHPMailer/src/Exception.php'; require '/home/username/PHPMailer/src/PHPMailer.php'; require '/home/username/PHPMailer/src/SMTP.php'; $mail = new PHPMailer(true); // Passing `true` enables exceptions try { //Server settings $mail->SMTPDebug = 2; // Enable verbose debug output $mail->isSMTP(); // Set mailer to use SMTP $mail->Host = 'smtp.dreamhost.com'; // Specify main and backup SMTP servers $mail->SMTPAuth = true; // Enable SMTP authentication $mail->Username = 'contact@example.com'; // SMTP username $mail->Password = 'secret'; // SMTP password $mail->SMTPSecure = 'ssl'; // Enable SSL encryption, TLS also accepted with port 465 $mail->Port = 465; // TCP port to connect to //Recipients $mail->setFrom('contact@example.com', 'Mailer'); //This is the email your form sends From $mail->addAddress('recipient@dreamhost.com', 'Joe User'); // Add a recipient address //$mail->addAddress('contact@example.com'); // Name is optional //$mail->addReplyTo('info@example.com', 'Information'); //$mail->addCC('cc@example.com'); //$mail->addBCC('bcc@example.com'); //Attachments //$mail->addAttachment('/var/tmp/file.tar.gz'); // Add attachments //$mail->addAttachment('/tmp/image.jpg', 'new.jpg'); // Optional name //Content $mail->isHTML(true); // Set email format to HTML $mail->Subject = 'Subject line goes here'; $mail->Body = 'Body text goes here'; //$mail->AltBody = 'This is the body in plain text for non-HTML mail clients'; $mail->send(); echo 'Message has been sent'; } catch (Exception $e) { echo 'Message could not be sent.'; echo 'Mailer Error: ' . $mail->ErrorInfo; }
?>
It is recommended to use port 465 with SSL as shown above.
You could optionally use port 587 with TLS.
Allowing GMAIL to send from your mail application
If you're using your GMAIL address to send via SMTP, you must first allow your application access to your GMAIL address. If you do not do this, your email will not authenticate and not send. View the following article for details:
See also
Internal links
- SSH overview
- PHP mail() overview
- How do I send PHP mail via SMTP?
- Troubleshooting PHP mail()
- SMTP quota limits
External links
- PHPMAILER tutorial – Google code