logo   Om PHP Mailer




PHPmailer er et plug-in til PHP. Programmet synes at være et af de / det mest anvendte alternativ til PHP's funktion: mail().


Programmet (zip-fil) kan downloades fra github her x. Udpakningen placeres automatisk i mappen "PHPMailer-master".


Dokumentationen til programmet synes begrænset.


Det synes ikke muligt, at få et endegyldigt overblik over hvilke SMTP-parametre programmet kan håndtere.


Nedenfor er i hovedtræk beskrevet, hvordan PHP Mailer anvendes til at sende mails enkeltvis.


Den samlede proces med at sende en mail kan deles op i 4 faser:

  1. Placering af programmel.
  2. Valg af SMTP-server
  3. Kode.

De enkelte faser er beskrevet nedenfor.


Den nedenfor viste kode anvendes i en 'glemt password'-procedure til at sende mail med nyt password via Google's SMTP-server. Proceduren ved at bruge andre SMTP-servere vil være helt eller delvis tilsvarende. Arrayen SMTPOptions er dog en Google-specialitet.




Programplacering


PHPMailer-programmet downloades og placeres et hensigtsmæssigt sted indenfor sitets mappestruktur.




SMTP server


For at få en mail ud i den store verden fra et site skal den forbi en SMTP server. Man er nødt til at afklare, hvilken server man vil / kan anvende og have visse tekniske oplysninger (parametre) om dens inddataside. De skal bruges til at opbygge "Parameterscriptet" (se nedenfor).


Har man sin egen SMTP-server, kan de nødvendige data om bl.a. parametre umiddelbart hentes fra dens dokumentation.


Ved valg af ekstern SMTP-server har man to principielle muligheder:
- hos den ISP man anvender.
- hos en 3die part.

En oversigt over ganske mange danske SMTP-servere kan ses her x


En mulighed er, at anvende Google's SMTP server: "smpt.gmail.com".




php.ini


For at kunne sende mails fra PHP er det nødvendigt at åbne (fjerne det foranstillede ';') 'extension=php_openssl.dll' i php.ini.




Ordbog


Nedenfor er der forklaringer på de parametre der skal / kan anvendes i mailscriptet.


require_once '/.. sti ../PHPMailerAutoload.php';Link til filen "PHPMailerAutoload.php" Den er et af de installerede PM-programmer.
$mail= new PHPMailer();Opretter et nyt objekt (instans af PM)
$body= eregi_replace("[\]",",$body);Fjerner evt. "\" i body. Værdien af den synes omdiskuteret.
Parametre relaterede til SMTP
$mail->IsSMTP();Fortæller PM, at SMTP protokollen skal anvendes
$mail->HostURL for den SMTP-server der skal modtage og videreformidle mails fra PM."
$mail->SMTPDebugDebug niveau, der skal anvendes under test.
1: returnerer fejloplysninger og alle mail-data.
2: returnerer fejloplysninger. Se også 37 nedenfor. Bør ikke indgå i driftsopsætning.
$mail->SMTPSecureAngivelse (ssl | tls) af sikerhedsniveau ved kommunikation med SMTP-serveren. Brug TLS.
$mail->PortDen port SMTP-serveren modtager mail-data gennem. Her 587.
$mail->SMTPOptionsParameter der uden ændringer er nødvendig ved anvendelse af SMTP-server hos Google - og måske også andre.
Adgangskontrol
$mail->SMTPAuthToggle (true | false) For om der skal medsendes logon-data (brugernavn og password) til SMTP serveren.
$mail->UsernameDet brugernavn, der skal anvendes for at få adgang til SMTP-serveren. Her Gmail brugernavn
$mail->PasswordDet password, der skal anvendes for at få adgang til SMTP-serveren. Her Gmail password
Parametre relaterede til mail'en
$mail->CharSetDet kar.sæt SMTP-serveren skal bruger ved opbygningen af mailen.
$mail->SetFrom("","")Den mailadresse, der skal stå som afsender af mailen. Kan enten være statisk eller den af brugeren indtastede mail adresse.
$mail->AddReplyTo("","")Den mailadresse der skal sendes svar tilbage til. Metode med parametre til mailadresse og f.eks. navn på den, der skal modtage svaret.
$mail->SubjectData til mailens emne-felt. Evt. som variabel.
$mail->isHTMLToggle (true | false) for, om der skal kunne sendes HTML-formatterede mails.
Skal være true, hvis man har indlagt HTML-kode i mailens tekst-del for at få en pænere præsentation af dataene fra formens enkelte felter felter.
'MsgHTML' skal da også anvendes.
$mail->MsgHTML($body)Data til mailens HTML-formatterede tekstdel.
$mail->AddAddress($address, "");Den adresse Mailen skal sendes til og evt. navn på den, der skal modtage mailen. AddAddress kan gentages så mange gange, det skal være, med hver sin mailadresse. Det foreslås at have en eksklusiv mailadresse til opsamling af den aktuelle form for mails mails.
$mail->AddCC($ccaddress, "");CC-adresse Mailen skal sendes til. AddCC kan gentages så mange gange, det skal være, med hver sin mailadresse.
$mail->AddBCC($bccaddress, "");BCC-adresse Mailen skal sendes til. AddBCC kan gentages så mange gange, det skal være, med hver sin mailadresse.
Bilag (filer / billeder)
$mail->AddAttachment("images/phpmailer.gif");Indeholder styredata for et tilføjet bilag. Linien kan forekomme så mange gange det skal være.
$mail->AddAttachment("images/phpmailer_mini.gif");Et bilag mere
Opfølgning
$mail->>ErrorInfoOplyser umiddelbart om fejl.
$mail->>Send()Returnerer true | false for om mailen sendt.
Andre parametre til PHPMailer
$mail->>Priority
$mail->>ContentType
$mail->>Encoding
$mail->>From
$mail->>FromName
$mail->>Sender
$mail->>AltBody
$mail->>WordWrap
$mail->>Mailer
$mail->>SendMail
$mail->>PluginDir
$mail->>ConfirmReadingTo
$mail->>Hostname
$mail->>Helo
$mail->>Timeout
$mail->>SMTPKeepAlive
$mail->>SingleTo
if(!$mail->Send()) {
echo "Mailer Error: " . $mail->ErrorInfo;
} else {
echo "Message sent!";
}
Den returnerede information kan anvendes til at fortælle, om mailen er blevet sendt. Endvidere kan der f.eks. etableres opdatering til logfil.




OAUTH2


Som et alternativ til adgangsstyring med brugernavn og kodeord kan man hos Google (og måske også andre steder) etablere adgangsstyring til SMTP-serveren på basis af OAUTH2. Den har sin rod i SASL protokollen (Simple Authorization and Security Layer), der er en generel 'industristandard' for maskinelle opkoblinger. Udover af Google anvendes SASL-baseret adgangsstyring også blandt mange andre af Dropbox, Twitter, Facebook, Youtube, .....





Hvorfor ikke mail()

Når der skal vælges "sendmail"-program, kan der være flere grunde til at standardfunktionen "mail()" i PHP ikke slår til.


mail() kommer bl.a. til kort på følgende områder

  • Kan ikke medsende brugernavn og password som mange SMTP-servere kræver.
  • Kan ikke medsende vedhæftede filer.
  • Kan ikke sende mails som både tekst og html.
  • Kan ikke sende emails med flere TOs, CCs, BCCs and REPLY-TOs.
  • Behøver en lokal SMTP-server.
  • Det synes usikkert om den særlige Google-SMTPOptions kan indpasses.




















x
x