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:
É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 pel meu correu mitjançant SWPanel..
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!".
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!**"

## 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
def send_mail(destination, subject, body):
sender = '[email protected]' password = 'Password' server = 'mail.swmanuales.com' port = 465
message = MIMEMultipart("alternative") message["Subject"] = subject message["From"] = sender message["To"] = destination
part = MIMEText(body, "html") message.attach(part)
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', '
message = text[sys.argv[0]] subject = message[0] body = message[1]
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!**".
