PHP/Mail: Difference between revisions
From charlesreid1
No edit summary |
|||
| Line 57: | Line 57: | ||
==Using PHPMailer== | ==Using PHPMailer== | ||
See https://github.com/PHPMailer/PHPMailer | |||
<pre> | <pre> | ||
| Line 74: | Line 76: | ||
// Set SMTP credentials | // Set SMTP credentials | ||
$mail | $mail = new PHPMailer(true); // Passing `true` enables exceptions | ||
$mail->SMTPDebug | try { | ||
$mail-> | //Server settings | ||
$mail-> | $mail->SMTPDebug = 2; // Enable verbose debug output | ||
$mail->Username | $mail->isSMTP(); // Set mailer to use SMTP | ||
$mail->Password | $mail->Host = 'smtp1.example.com;smtp2.example.com'; // Specify main and backup SMTP servers | ||
$mail->SMTPAuth = true; // Enable SMTP authentication | |||
$mail->Username = 'user@example.com'; // SMTP username | |||
$mail->Password = 'secret'; // SMTP password | |||
$mail->SMTPSecure = 'tls'; // Enable TLS encryption, `ssl` also accepted | |||
$mail->Port = 587; // TCP port to connect to | |||
//Recipients | |||
$mail->setFrom('from@example.com', 'Mailer'); | |||
$mail->addAddress('joe@example.net', 'Joe User'); // Add a recipient | |||
$mail->addAddress('ellen@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 = 'Here is the subject'; | |||
$mail->Body = 'This is the HTML message body <b>in bold!</b>'; | |||
$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; | |||
} | |||
?> | ?> | ||
Revision as of 11:35, 28 October 2017
Sending email with PHP:
https://stackoverflow.com/questions/14456673/sending-email-with-php-from-an-smtp-server#14456761
Procedure:
- Open port 465
- Put PHPMailer on your PHP include path
- From the PHP script you want to send email from, include PHPMailer
- Drop in your SMTP credentials
- Now you're able to send off emails
Namecheap SMTP Mail Settings
Namecheap:
- Username: your email address
- Password: password for this email account
- Incoming/outgoing servers name: mail.privateemail.com
- Incoming server type: IMAP or POP3
- Incoming server (IMAP): 993 port for SSL
- Incoming server (POP3): 995 port for SSL
- Outgoing server (SMTP): 465 port for SSL
Installing PHPMailer
Visit PHPMailer: https://github.com/PHPMailer/PHPMailer
Copy the contents of the PHPMailer folder into one of the include_path directories specified in your PHP configuration
Opening Port
The following iptables rule will keep track of outgoing packets and will allow corresponding return packets - necessary for SMTP connections, because you want to be able to receive the "okay, data received" signal from the server you're sending mail out to.
iptables -I INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
See [1]
Editing php.ini
No smtp settings needed in the php.ini file...
See [2]
Do need to enable PHP OpenSSL support though: in php.ini, add
[PHP_OPENSSL] extension=php_openssl.dll
See [3]
Editing PHPMailer Settings
Need to edit the file class.smtp.php and put your SMTP credentials there. (I think.)
Using PHPMailer
See https://github.com/PHPMailer/PHPMailer
<?php
//////////////////////////////////////////////////////////////
// Include PHP mailer stuff
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;
require 'path/to/PHPMailer/src/Exception.php';
require 'path/to/PHPMailer/src/PHPMailer.php';
require 'path/to/PHPMailer/src/SMTP.php';
//////////////////////////////////////////////////////////////
// Set SMTP credentials
$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 = 'smtp1.example.com;smtp2.example.com'; // Specify main and backup SMTP servers
$mail->SMTPAuth = true; // Enable SMTP authentication
$mail->Username = 'user@example.com'; // SMTP username
$mail->Password = 'secret'; // SMTP password
$mail->SMTPSecure = 'tls'; // Enable TLS encryption, `ssl` also accepted
$mail->Port = 587; // TCP port to connect to
//Recipients
$mail->setFrom('from@example.com', 'Mailer');
$mail->addAddress('joe@example.net', 'Joe User'); // Add a recipient
$mail->addAddress('ellen@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 = 'Here is the subject';
$mail->Body = 'This is the HTML message body <b>in bold!</b>';
$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;
}
?>