Red de conocimiento informático - Problemas con los teléfonos móviles - ¿Qué biblioteca debería cargar Python Mimebase?

¿Qué biblioteca debería cargar Python Mimebase?

importar smtplib

desde email.mime.text importar MIMEText

desde email.mime.multipart importar MIMEMultipart

desde email.mime .base import MIMEBase

desde email.header import Header

desde codificadores de importación de correo electrónico

clase MailSender(objeto):

_from = Ninguno

_attachments = []

def __init__(self, smtpSvr, puerto):

self.smtp = smtplib.SMTP()

print("conectando...")

self.smtp.connect(smtpSvr, puerto)

print("conectado!!!")

def inicio de sesión(self, usuario, pwd):

self._from = usuario

print("iniciar sesión...")

self.smtp. login(usuario, contraseña)

def add_attachment(self, nombre de archivo):

'''''

Agregar archivo adjunto

' ''

att = MIMEBase('') ​​​​aplicación', 'octet-stream')

att.set_payload(open(nombre de archivo, 'rb').read() )

att.add_header('Content-Disposition', ' adjunto', filename=('gbk', '', filename) )

encoders.encode_base64(att)

self._attachments.append(att)

def enviar(self, asunto, contenido, to_addr):

'''''

Enviar correo electrónico

'''

msg = MIMEMultipart('alternative')

contenidos = MIMEText(content, "html", _charset='utf- 8')

msg['Subject'] = asunto

msg['From'] = self._from

msg['To'] = to_addr

para att in self._ archivos adjuntos:

msg.attach(att)

msg.attach(contents)

intente:

self.smtp.sendmail(self._from, to_addr, msg.as_string ())

devuelve Verdadero

Excepto excepción como e:

imprime (str(e))

Devuelve Falso

def close(self):

self.smtp.quit()

print("logout.")

De hecho, los códigos de correo electrónico de Python se pueden encontrar en todas partes de Internet, pero casi todos los códigos en Internet tendrán problemas al enviar archivos adjuntos con nombres chinos. En este caso, el autor no pudo darse cuenta al principio de que no había información preparada en ningún lugar de Internet. Finalmente, combinado con la información de Internet y muchos experimentos propios, finalmente encontré una solución.

[python] ¿Ver impresión de texto sin formato? add_header('Content-Disposition', 'attachment', filename=('gbk', '', filename) )

encoders.encode_base64(att)

La razón por la cual en el El código anterior gbk se utiliza porque el nombre del archivo está codificado en gbk en Windows.