Enviament de correus des de PHP: PHPMailer

De Wikijoan
Revisió de 14:50, 17 maig 2019; Joan (Discussió | contribucions)
(dif) ←Versió més antiga | Versió actual (dif) | Versió més nova→ (dif)
Dreceres ràpides: navegació, cerca

versió 6.0.7 del PHPMailer (abril 2019)

Escollim la carpeta on tidrem el nostre fitxer php que utilitzarà la llibreria phpMailer, i fem cd/ a aquesta carpeta.

$ composer require phpmailer/phpmailer
Using version ^6.0 for phpmailer/phpmailer
./composer.json has been updated
Loading composer repositories with package information
Updating dependencies (including require-dev)
  - Installing phpmailer/phpmailer (v6.0.7)
    Loading from cache

...

Com a novetat d'aquesta última versió, s'ha d'instal.lar el PHPMailer mitjançant composer.

Composer is a tool for dependency management in PHP. It allows you to declare the libraries your project depends on and it will manage (install/update) them for you.

Després d'instal·lar el phpmailer, veurem que s'ha creat el fitxer composer.json, i també la carpeta vendor/:

$ cat composer.json 
{
    "require": {
        "phpmailer/phpmailer": "^6.0"
    }
}

En el git de phpMailer veiem que tenim tots els codis fonts (no els necessitem si hem instal·lat phpMailer amb composer, i tenim la carpeta examples/ on tenim molt codi font disponible. Fem la prova amb el script gmail.php (veurem que es diu gmail.phps, el copiem i li treiem la s final). El codi es comenta a classe.

Edita el fitxer ficant el teu compte de gmail (nom d'usuari i password). Enviaràs un mail al professor (jquintana@jaumebalmes.net), on inclouràs:

En aquesta pràctica s'avaluarà tant la recepció del correu electrònic, com l'entrega en el Google Classroom.

En aquest codi utilitzem el servidor SMTP de GMail per enviar correus electrònics cap a l'exterior. El codi que funciona és similar a (copiar el codi font directament del GitHub):

...
//Set the SMTP port number - 587 for authenticated TLS, a.k.a. RFC4409 SMTP submission
$mail->Port = 587;

//Set the encryption system to use - ssl (deprecated) or tls
$mail->SMTPSecure = 'tls';

//Whether to use SMTP authentication
$mail->SMTPAuth = true;

//Username to use for SMTP authentication - use full email address for gmail
$mail->Username = "jquintana@jaumebalmes.net";

//Password to use for SMTP authentication
$mail->Password = "*******";

//Set who the message is to be sent from
$mail->setFrom('jquintana@jaumebalmes.net', 'Joan Quintana (Balmes)');

//Set an alternative reply-to address
$mail->addReplyTo('jquintana@jaumebalmes.net', 'Joan Quintana (Balmes)');

//Set who the message is to be sent to
$mail->addAddress('joanqc@gmail.com', 'Joan Quintana');

//Set the subject line
$mail->Subject = 'PHPMailer GMail SMTP test';

//Read an HTML message body from an external file, convert referenced images to embedded,
//convert HTML into a basic plain-text alternative body
$mail->msgHTML(file_get_contents('contents.html'), __DIR__);

//Replace the plain text body with one created manually
$mail->AltBody = 'This is a plain-text message body';

//Attach an image file
$mail->addAttachment('images/maria.jpeg');
...

En aquest codi has de tenir en compte qui envia el correu electrònic (un compte de gmail vàlid, per exemple el teu compte de jaumebalmes.net), i a qui li envies el correu electrònic.

No funciona? Problemes de seguretat en el teu compte de gmail

Si no funciona, és possible que rebis una alerta de seguretat en el teu compte de correu. El script PHP que vols executar està fent un ús del teu compte de gmail, i possiblement tinguis el compte de gmail amb un mode segur que no permet l'execució d'aplicacions desconegudes. Has d'anar a la configuració del teu compte de Gmail, a l'apartat seguretat:

Accés d'aplicacions menys segures
Per protegir el teu compte, les aplicacions i els dispositius que fan servir una tecnologia d'inici de sessió menys segura estan bloquejats. Més informació

Desactivada
Activa l'accés (opció no recomanada)

Permet l'accés a les aplicacions menys segures: DESACTIVAT -> ACTIVAR

I ara ja hauria de funcionar.

Entrega

Recorda la normativa per entregar les pràctiques al Classroom: ASIX-M09-IAW#Normativa_d.27entrega_de_les_pr.C3.A0ctiques_al_Moodle.


creat per Joan Quintana Compte, abril 2019

Eines de l'usuari
Espais de noms
Variants
Accions
Navegació
Institut Jaume Balmes
Màquines recreatives
CNC
Informàtica musical
joanillo.org Planet
Eines