Потому что, когда я пытаюсь отправить строку по почте в Python, я получаю следующую ошибку:

Я просто пытаюсь прочитать Excel, сохранить его в переменных, а затем создать строку с этими переменными. Наконец, я пытаюсь отправить эту строку по почте самому себе (я удалил данные доступа в коде, который копирую ниже), но когда я выполняю код, он выдает мне ошибку 'TypeError: ожидаемая строка или байтовоподобный объект ' при отправке почты. Я не знаю, что может происходить. Кто-нибудь может что-то придумать? Это код:

from email.mime.multipart import MIMEMultipart
 from email.mime.text import MIMEText
 import smtplib
 import pandas as pd
 import ast

columnas = ['Hotel', 'Nombre', 'Apellido 1', 'Apellido 2', 'Contraseña', 
'Departamento', 'Cuenta', 'Cargo', 'Tipo']
df = pd.read_excel('prueba.xlsx')
nombre = df[columnas[1]]
apellido1 = df[columnas[2]]
apellido2 = df[columnas[3]]
contraseña = df[columnas[4]]
mail = df[columnas[6]]

for i in [1]:
print(nombre[i] + " " + apellido1[i] + " " + apellido2[i])

message = "Hola ", nombre[i], " ", apellido1[i], " ", apellido2[
i], " . Su cuenta de Office 365 se ha creado con éxito. Sus datos para 
acceder son los siguientes: Usuario: ",
mail[i], " Contraseña: ", contraseña[i], " Saludos."
print(message)

server = smtplib.SMTP('ipservidordecorreo', 25)
server.login("test@gmail.com", "contraseña")
server.sendmail(
"test@gmail.com",
"test@gmail.com",
message)
server.quit()
2
задан 27.11.2019, 17:39
1 ответ

Очень легкий: не estÃ: s пробуя посылать string , а tupla string .

message = "Hola ", nombre[i], " ", apellido1[i], " ", apellido2[i], " . Su cuenta de Office 365 se ha creado con éxito. Sus datos para acceder son los siguientes: Usuario: ", mail[i], " Contraseña: ", contraseña[i], " Saludos."

С этим instrucci¦n estÃ: s создавая tupla, не цепь.

Ты Можешь:

  • Или производить цепь прямо (используя правильный оператор, которого +):

    message = "Hola " + nombre[i] + " " + ...
    
  • Или использовать funci¦n join, чтобы производить цепь начиная с tupla:

    message = ''.join( "Hola ", nombre[i], " ", apellido1[i], " ", ... )
    
4
ответ дан 01.12.2019, 10:46
  • 1
    Хорошие, он правилен я делаю print и формируется цепь, но когда пробует властвовать по почте, у меня выходит следующее: UnicodeEncodeError: ' ascii' codec can' t encode character ' \xe9' in position 65: порядковый not in range (128) – Jabel Álvarez Acosta 27.11.2019, 18:02
  • 2
    @JabelÁ lvarezAcosta Это другая отличная проблема, не deberí схвати задавать несколько вопросов в той же publicació n. Сообщение говорит, что у твоей цепи есть не правильные символы в codificació n Unicode. Как общая норма, удали ударные гласные и ñ. – Trauma 27.11.2019, 18:16