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.png)
## 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.png)