PHPMailer

Opdateret June 22nd, 2022

Hvis du gerne vil skrive et stykke kode der kan sende mail via webhotellet som ligger hos os. Så anbefaler vi PHPMailer.

Alternativt har mange CMS systemer også plugins der kan konfigurere det for jer. Se evt. i bunden af denne artikel: https://vidensbase.curanet.dk/da_DA/webhotel/opsaetning-af-smtp-til-webhotel

PHPMailers github side har en rigtig god beskrivelse af hvordan det PHPMailer installeres på forskellige måder der kan passe dine behov, så vi anbefaler at du tager et kig her: GitHub - PHPMailer/PHPMailer: The classic email sending library for PHP .

Der er to primære måder at gøre det på: Uden composer og med composer. 

Uden Composer



Download PHPMailer fra Githubben.
https://github.com/PHPMailer/PHPMailer/archive/master.zip

Udpak filerne og læg dem op på dit webhotel via FTP. I dette tilfælde lad os lægge den under /PHPMailer/ i din webroot. Den fulde path vil være /var/www/www.webguide.nu/PHPMailer/,  hvor webguide.nu erstattes med dit domæne.


Dit PHPmail script skal nu inkludere de nødvendige class files således.


<?php
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;


require '/var/www/www.webguide.nu/PHPMailer/src/Exception.php';
require '/var/www/www.webguide.nu/PHPMailer/src/PHPMailer.php';
require '/var/www/www.webguide.nu/PHPMailer/src/SMTP.php';


Du skal derefter kalde PHPMailer således:


$mail = new PHPMailer(true);



Derefter kan du sætte smtp Host indstillingerne således.


try {    
    //Server settings
    //Reference https://vidensbase.curanet.dk/da_DA/webhotel/opsaetning-af-smtp-til-webhotel
    $mail->SMTPDebug = SMTP::DEBUG_SERVER;                //Enable verbose debug output
    $mail->isSMTP();                                      //Send using SMTP
    $mail->Host       = 'smtp.curanet.dk';                //Set the SMTP server to send through
    $mail->SMTPAuth   = false;                            //Disable SMTP authentication
    $mail->Username   = '';                               //SMTP username. Not used.
    $mail->Password   = '';                               //SMTP password. Not used.
    $mail->Port       = 25;                               //TCP port to connect to, smtp.curanet.dk uses port 25

    //Recipients
    $mail->setFrom('from@webguide.nu', 'Support');
    $mail->addAddress('modtager1@webguide.nu', 'Modtager 1');     //Add a recipient
    $mail->addAddress('modtager2@webguide.nu');                   //Name is optional
    $mail->addReplyTo('support@webguide.nu', 'Information');
    $mail->addCC('cc@webguide.nu');
    $mail->addBCC('bcc@webguide.nu');

    //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. Mailer Error: {$mail->ErrorInfo}";
}
?>


Du har nu oprettet et PHPMailer script som skriver ud fra vores smtp host: smtp.curanet.dk

og den færdige udgave ser det sådan her ud



<?php
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;

require '/var/www/www.webguide.nu/PHPMailer/src/Exception.php';
require '/var/www/www.webguide.nu/PHPMailer/src/PHPMailer.php';
require '/var/www/www.webguide.nu/PHPMailer/src/SMTP.php'; 

$mail = new PHPMailer(true);

try {    
    //Server settings
    //Reference https://vidensbase.curanet.dk/da_DA/webhotel/opsaetning-af-smtp-til-webhotel
    $mail->SMTPDebug = SMTP::DEBUG_SERVER;                //Enable verbose debug output
    $mail->isSMTP();                                      //Send using SMTP
    $mail->Host       = 'smtp.curanet.dk';                //Set the SMTP server to send through
    $mail->SMTPAuth   = false;                            //Disable SMTP authentication
    $mail->Username   = '';                               //SMTP username. Not used.
    $mail->Password   = '';                               //SMTP password. Not used.
    $mail->Port       = 25;                               //TCP port to connect to, smtp.curanet.dk uses port 25

    //Recipients
    $mail->setFrom('from@webguide.nu', 'Support');
    $mail->addAddress('modtager1@webguide.nu', 'Modtager 1');     //Add a recipient
    $mail->addAddress('modtager2@webguide.nu');                   //Name is optional
    $mail->addReplyTo('support@webguide.nu', 'Information');
    $mail->addCC('cc@webguide.nu');
    $mail->addBCC('bcc@webguide.nu');

    //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. Mailer Error: {$mail->ErrorInfo}";
}
?>



Med Composer

Du kan installere PHPMailer med composer, dette kræver at du har SSH adgang, se vores vejledninger her: https://vidensbase.curanet.dk/da_DA/160248-ssh.
Du kan følge vejledningen herfra via Github pagen her:GitHub - PHPMailer/PHPMailer: The classic email sending library for PHP 

Hvorfor phpmailer?

Native PHP funktionen mail() sender ud med localhost. Webhotellerne er ikke beregnet til at sende ud med dette, i stedet bør der bruges vores smtp.curanet.dk som smtphost. Den har væsentlig bedre reputation, og I vil have bedre success med mailudsendelse. Derfor forslår vi PHPMailer, der tillader at du kan sende ud fra andre smtphosts.

Minimal installation?

PHPMailer kommer med en række ekstra filer som du ikke nødvendigtvis skal bruge. Eksempler på usage osv.

Se eksempelvis under mappen language, du har nok ikke brug for alle sprogene. Hvis du kan nøjes med engelske fejlbeskeder, så kan du slette language-mappen helt.

I /src/ mappen skal du som minimum bruge PHPMailer.php og SMTP.php. 

Var denne artikel hjælpsom?