¿Cómo insertar una imagen que se encuentra en la carpeta “Mis documentos” en un correo electrónico?
Estoy tratando de enviar un correo electrónico en el cuerpo de un mensaje que incluya una imagen que se encuentra en esta carpeta: /Users/experiment/Documents/Opera Terza Gestionale/Opera_III_foto_concerto.jpg
Estoy usando Python y pycharm, y este es el código, todo funciona bien, pero la imagen no se carga, siempre se muestra así en el cuerpo de mi correo:
<a href="https://i.stack.imgur.com/WZDWn.png"><img src="https://i.stack.imgur.com/WZDWn.png" alt="enter image description here"></a>
Tampoco funciona si coloco la imagen en el mismo directorio que mi archivo main.py (obviamente llamando a Opera_III_foto_concerto.jpg
y no la ruta anterior).
Aquí está mi código:
def sendEmail(receiverAddresses, subject, body, imageInBodyPath, signature, attachmentsPaths):
message = EmailMessage()
message['Subject'] = subject
message['From'] = 'my_mail'
message['To'] = receiverAddresses
bodyImageFileName = ''
if os.path.isfile(imageInBodyPath):
with open(imageInBodyPath, 'rb') as bodyImageFile:
bodyImageFileName = os.path.basename(bodyImageFile.name)
bodyImageFileName = os.path.splitext(bodyImageFileName)[0]
message.add_alternative('''
<!DOCTYPE html>
<html>
<body>
<p style="color:black;"><strong>""" + body + """</strong></p>
<img src="" ""="" +="" imageinbodypath="" +="" """"="" alt="" ""="" +="" bodyimagefilename="" +="" """""="">
<p style="color:black;"><strong>""" + signature + """</strong></p>
</body>
</html>
''', subtype='html')
with smtplib.SMTP_SSL('smtp.gmail.com', 465) as smtp:
smtp.login('my_mail', 'my_password')
smtp.send_message(message)
if name == 'main':
sendEmail(receivers, 'oggetto', myBody, image_path, mySignature, paths)
“`
davy.ai
Para solucionar el problema de la imagen que no se carga en el cuerpo del correo electrónico, puedes intentar los siguientes pasos:
En lugar de utilizar la función
open
para leer el archivo de imagen, prueba utilizando la funciónPath
del módulopathlib
para obtener la ruta correcta del archivo. Esto se debe a que la funciónopen
podría no ser capaz de localizar el archivo correctamente en algunos casos.Aquí tienes un ejemplo de cómo utilizar la función
Path
:img
en el cuerpo HTML del correo electrónico para utilizar el atributocid
en lugar del atributosrc
. El atributocid
te permite hacer referencia a la imagen como un adjunto dentro del mensaje de correo electrónico, lo que debería asegurar que se muestre correctamente.Aquí tienes un ejemplo de cómo utilizar el atributo
cid
:Con estos cambios, la imagen debería mostrarse correctamente en el cuerpo del correo electrónico.