¿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) p>
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.