· Tutorial ·

Com enviar correus des de Python

Per enviar correus electrònics des de Python3 de forma autenticada a través de SMTP, pots utilitzar la llibreria smtplib.

Necessitaràs les dades d'accés al compte de correu des d'on enviaràs els correus, juntament amb les dades d'accés al servidor. En aquest cas, utilitzarem les dades següents:

  • Remitent: [email protected]
  • Contrasenya: Password
  • Servidor: mail.swmanuales.com
  • Port: 465

info És recomanable tenir instal·lat un certificat TLS per al correu electrònic. Pots instal·lar-lo des del següent manual.

Enviament d'un correu en format text pla

El codi d'enviament d'un correu en text pla i HTML és molt similar.

En aquest cas, estem enviant un correu amb dastí '[email protected]', amb l'assumpte "Benvingut/da a SWPanel" i el text: "Benvingut/da a SWPanel Accedeix al teu SWPanel: https://swpanel.com" en format de text pla.

import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart

# Configuració de la connexió
sender = '[email protected]'
password = 'Password'
server = 'mail.swmanuales.com'
port = 465

# Configuració del destinatari
to = '[email protected]'

# Configuració de les capçaleres i del missatge
message = MIMEMultipart("alternative")
message["Subject"] = "Bienvenido/a a SWPanel"
message["From"] = sender
message["To"] = to

body = """
Benvingut/da a SWPanel

Accedeix al teu SWPanel: https://swpanel.com
"""

part = MIMEText(body, "plain")
message.attach(part)

# Enviament del missatge
try:
    smtp_server = smtplib.SMTP_SSL(server, port)
    smtp_server.ehlo()
    smtp_server.login(sender, password)
    smtp_server.sendmail(sender, to, message.as_string())
    smtp_server.close()
    print ("S'ha enviat correctament!")
except Exception as ex:
    print ("Hi ha hagut un error...",ex)

Per executar-lo, podem utilitzar la següent ordre des del terminal:

python3 nombre_del_fichero.py

Si tot ha anat bé, ens hauria de tornar: "¡S'ha enviat correctament!".

Enviament d'un correu en format HTML

Per enviar un correu amb contingut HTML, podem utilitzar aquesta variant del codi. El format en HTML ens permet afegir estils al missatge:

import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart

# Configuració de la connexió
sender = '[email protected]'
password = 'Password'
server = 'mail.swmanuales.com'
port = 465

# Configuració del destinatari
to = '[email protected]'

# Configuració de les capçaleres i del missatge
message = MIMEMultipart("alternative")
message["Subject"] = "Benvingut/da a SWPanel"
message["From"] = sender
message["To"] = to

body = """\
<html>
<head>
    <style>
        .boton {
            background-color: #089cff;
            color: white;
            padding: 10px 20px;
            text-decoration: none;
            border-radius: 5px;
        }
    </style>
</head>
<body>
    <h1>Bienvenido/a a SWPanel</h1>
    <p><a href="https://swpanel.com" class="boton">Accede a tu SWPanel</a></p>
</body>
</html>
"""


part = MIMEText(body, "html")
message.attach(part)

# Enviament del missatge
try:
    smtp_server = smtplib.SMTP_SSL(server, port)
    smtp_server.ehlo()
    smtp_server.login(sender, password)
    smtp_server.sendmail(sender, to, message.as_string())
    smtp_server.close()
    print ("S'ha enviat correctament!")
except Exception as ex:
    print ("Hi ha hagut un error....",ex)

Per executar-lo, podem utilitzar la següent ordre des del terminal:

`` python3 nombre_del_fichero.py


Si tot ha anat bé, ens hauria de tornar: "**S'ha enviat correctament!**"

![](https://static.swpanel.com/doc/2022/images/0447/0447_02_CA.webp)


## Automatització de l'enviament de correu

A partir del codi anterior, podem definir una funció que s'encarregarà d'enviar el correu electrònic i, mitjançant una llista, podem definir el contingut dels correus que enviarem.

D'aquesta manera, no caldrà editar el document per canviar el destinatari ni el contingut del correu.

import smtplib from email.mime.text import MIMEText from email.mime.multipart import MIMEMultipart import sys

Creació de la funció que fa l'enviament

def send_mail(destination, subject, body):

Configuració de la connexió

sender = '[email protected]' password = 'Password' server = 'mail.swmanuales.com' port = 465

Configuració de les capçaleres i del missatge

message = MIMEMultipart("alternative") message["Subject"] = subject message["From"] = sender message["To"] = destination

part = MIMEText(body, "html") message.attach(part)

Enviament del missatge

try: smtp_server = smtplib.SMTP_SSL(server, port) smtp_server.ehlo() smtp_server.login(sender, password) smtp_server.sendmail(sender, destination, message.as_string()) smtp_server.close() print ("S'ha enviat correctament!") except Exception as ex: print ("Hi ha hagut un error...",ex)

text = { #'identificador': ['Asunto', 'cuerpo'] 'welcome': ['Benvingut/da a SWPanel', '

Bienvenido/a a SWPanel

Accede a tu SWPanel

'], 'other_text': 'other text', 'other_text2': 'other text 2', }

message = text[sys.argv[0]] subject = message[0] body = message[1]

Configuració del destinatari

destination = sys.argv[1]

send_mail(destination, subject, body)



En el moment d'executar el fitxer per consola, t'indicarem quin tipus de correu volem enviar i el destinatari al qual l'has d'enviar.

Per executar-lo, podem utilitzar la següent ordre des del terminal:

```
python3 nombre_del_fichero.py welcome [email protected]
```

On 'welcome' és l'identificador a la llista i '[email protected]' és el compte de destinació.

Si tot ha anat bé, ens hauria de tornar: "**¡S'ha enviat correctament!**".

![](https://static.swpanel.com/doc/2022/images/0447/0447_02_CA.webp)
i