Com enviar correus des de Python

Actualitzat el 2026-10-23 05:01:19 4 visites

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 del qual s'enviaran els correus, juntament amb les dades d'accés al servidor. En aquest cas, utilitzarem les següents dades:

  • 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: Manual: Com activar TLS per al meu correu mitjançant SWPanel..

Enviament d'un correu en format text pla

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

En aquest cas, estem enviant un correu a la destinació '[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ó dels encapçalaments i del missatge
message = MIMEMultipart("alternative")
message["Subject"] = "Benvingut/da 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 ("Ha ocorrit un error...",ex)

Per executar-lo, podem utilitzar el següent comando des del terminal:

python3 nombre_del_fichero.py

Si tot ha anat bé, ens hauria de retornar: "!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ó dels encapçalaments 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>Benvingut/da a SWPanel</h1>
    <p><a href="https://swpanel.com" class="boton">Accedeix al teu 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 ("Ha ocorrit un error...",ex)

Per executar-lo, podem utilitzar el següent comando des del terminal:

python3 nombre_del_fichero.py

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

Automatització de l'enviament de correu

A partir del codi anterior, podem definir una funció que s'encarregui d'enviar el correu electrònic i, a través d'una llista, podem definir el contingut dels correus que enviarem.

D'aquesta manera, no necessitarem 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 realitza l'enviament
def send_mail(destination, subject, body):
  # Configuració de la connexió
  sender = '[email protected]'
  password = 'Password'
  server = 'mail.swmanuales.com'
  port = 465

  # Configuració dels encapçalaments 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 ("Ha ocorrit un error...",ex)


text = {
  #'identificador': ['Assumpte', 'cos']
  'welcome': ['Benvingut/da a SWPanel', '<html> <head> <style> .boton { background-color: #089cff; color: white; padding: 10px 20px; text-decoration: none; border-radius: 5px; } </style> </head> <body> <h1>Benvingut/da a SWPanel</h1> <p><a href="https://swpanel.com" class="boton">Accedeix al teu SWPanel</a></p> </body> </html>'],
  '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, l'indicarem quin tipus de correu volem enviar i el destinatari al qual l'ha d'enviar.

Per executar-lo, podem utilitzar el següent comando 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 retornar: "!S'ha enviat correctament!".