Tomergngn
Tomergngn

Reputation: 74

How to make "PHPmailer" work in a function

I don't know how to send a mail using PHPmailer in a function.

I want to do something similar to this - when I'll want to send a mail, I'll just call a function (like send::mail()). here is my code:

<?php
require '.\vendor\autoload.php';

//PHPMailer Object
use PHPMailer\PHPMailer\PHPMailer;
$mail = new PHPMailer();
$mail->IsSMTP();
$mail->IsSendmail();
//From email address and name
$mail->SMTPAuth = true;                               // Enable SMTP authentication
$mail->setFrom('[email protected]', 'Bot name');
$mail->Password = "########";                       // SMTP password
$mail->SMTPSecure = 'ssl';                            // Enable TLS encryption, `ssl` also accepted
$mail->Port = 465;         
//To address and name
$mail->addAddress("[email protected]"); //Recipient name is optional

//Address to which recipient will reply

//Send HTML or Plain Text email
$mail->isHTML(true);

$mail->Subject = "Subject Text";
$mail->Body = "<i>Mail body in HTML</i>";
$mail->AltBody = "This is the plain text version of the email content";
$mail->Mailer = "sendmail";
if(!$mail->send()) 
{
    echo "Mailer Error: " . $mail->ErrorInfo;
}
?>

can someone help me put it into a function? when I tried, the "use" command didn't work.

Upvotes: 2

Views: 2834

Answers (1)

Mert S. Kaplan
Mert S. Kaplan

Reputation: 1126

First, you must determine the data.

    $mailHost = '';
    $mailSMTPAuth = '';
    $mailUsername = '';
    $mailPassword = '';
    $mailSMTPSecure = '';
    $mailPort = '';
    $mailSenderAddress = '';
    $mailSenderName = '';

Then you can generate a function that contains only the recipient, subject and message, and you can send the mail easily by pull the settings into this function:

function sendMail($sendMailAdress, $sendMailName, $sendMailSubject, $sendMailMessage) {
    global $mailHost;
    global $mailSMTPAuth;
    global $mailUsername;
    global $mailPassword;
    global $mailSMTPSecure;
    global $mailPort;
    global $mailSenderAddress;
    global $mailSenderName;

    require_once('class/phpmailer/PHPMailerAutoload.php');
    $mail = new PHPMailer;
    $mail->isSMTP(); // Set mailer to use SMTP
    $mail->Host = $mailHost; // Specify main and backup SMTP servers
    $mail->SMTPAuth = $mailSMTPAuth; // Enable SMTP authentication
    $mail->Username = $mailUsername; // SMTP username or mail
    $mail->Password = $mailPassword; // SMTP password
    $mail->SMTPSecure = $mailSMTPSecure; // Enable TLS encryption, `ssl` also accepted
    $mail->Port = $mailPort; // TCP port to connect to
    $mail->CharSet = 'utf-8';
    $mail->setFrom($mailSenderAddress, $mailSenderName);
    $mail->addAddress($sendMailAdress, $sendMailName); // Add a recipient
    $mail->isHTML(true); // Set email format to HTML
    $mail->Subject = $sendMailSubject;
    $mail->Body = $sendMailMessage;
    if(!$mail->send()) {
        return false;
    } else {
        return true;
    }
}

The function will work like this:

sendMail('[email protected]', 'Test User', 'Subject of test mail', 'And your mail message);

Upvotes: 3

Related Questions