Red de conocimiento informático - Problemas con los teléfonos móviles - ¿Python necesita registrarse primero para enviar correos electrónicos mediante SMTP?

¿Python necesita registrarse primero para enviar correos electrónicos mediante SMTP?

SMTP (Protocolo simple de transferencia de correo) es un protocolo simple de transferencia de correo. Es un conjunto de reglas para transmitir correo desde una dirección de origen a una dirección de destino. Controla el método de transferencia de cartas.

smtplib de Python proporciona una forma muy conveniente de enviar correos electrónicos. Simplemente encapsula el protocolo SMTP.

La sintaxis de Python para crear un objeto SMTP es la siguiente:

import smtplib

smtpObj = smtplib.SMTP( [host [, puerto [, local_hostname] ]]] )

Descripción del parámetro:

host: host del servidor SMTP. Puede especificar la dirección IP o el nombre de dominio del host, como por ejemplo: ziqiangxuetang.com. Este es un parámetro opcional.

puerto: si proporciona el parámetro de host, debe especificar el número de puerto utilizado por el servicio SMTP. Generalmente, el número de puerto SMTP es 25.

local_hostname: si SMTP está en su máquina local, solo necesita especificar la dirección del servidor como localhost.

El objeto SMTP de Python utiliza el método sendmail para enviar correos electrónicos. La sintaxis es la siguiente:

SMTP.sendmail(from_addr, to_addrs, msg[, mail_options, rcpt_options]

Descripción del parámetro:

from_addr: dirección del remitente de correo electrónico

to_addrs: lista de cadenas, dirección de envío de correo electrónico

msg: enviar mensaje

Preste atención al tercer parámetro aquí, msg es una cadena que representa un correo electrónico. Sabemos que un correo electrónico generalmente consta de un título, remitente, destinatario, contenido del correo electrónico, archivo adjunto, etc. el formato de msg. El formato es el formato definido en el protocolo smtp

Ejemplo

El siguiente es un ejemplo simple de envío de correos electrónicos usando Python:

#!/usr/bin/python.

importar smtplib

remitente = 'from@fromdomain.com'

receptores = ['to@todomain.com ']

mensaje = """De: De la persona

Para: A la persona

Asunto: Prueba de correo electrónico SMTP

Este es un mensaje de correo electrónico de prueba.

"""

prueba:

smtpObj = smtplib.SMTP('localhost')

smtpObj.sendmail(remitente, destinatarios, mensaje)

imprimir "Correo electrónico enviado correctamente"

excepto SMTPException:

print "Error: no se puede enviar correo electrónico"

Usa Python para enviar correos electrónicos en formato HTML

La diferencia entre enviar correos electrónicos en formato HTML con Python y enviarlos sin formato mensajes de texto es establecer el _subtipo en MIMEText para html.

El código específico es el siguiente:

importar smtplib

de email.mime.text importar MIMEText

mailto_list=["YYY@YYY.com"]

mail_host="smtp.XXX.com" #Configurar servidor

mail_user="XXX" #Nombre de usuario

mail_pass="XXXX" #Contraseña

mail_postfix="XXX.com" #El sufijo de la bandeja de salida

def send_mail(to_list,sub,content): #to_list: destinatario; sub: contenido del asunto: contenido del correo electrónico

me="hello"+"<"+mail_user+"@"+mail_postfix+">" #El saludo aquí se puede configurar arbitrariamente Después de recibir la carta, se mostrará de acuerdo con la configuración

msg = MIMEText( content,_subtype='html',_charset='gb2312') #Crea una instancia, aquí configurada en formato html para correo electrónico

msg['Subject'] = sub #Establece el tema

msg['From'] = yo

msg['To'] = ";".join(to_list)

prueba:

s = smtplib.SMTP()

s.connect(mail_host) #Conéctate al servidor smtp

s.login(mail_user,mail_pass) #Inicia sesión en el servidor

s.sendmail(me , to_list, msg.as_string()) #Enviar correo

s.close()

devolver Verdadero

excepto excepción, e:

print str(e)

return False

if __name__ == '__main__':

if send_mail(mailto_list,"hello","小五义"):

print "Enviado correctamente"

else:

print " Error de envío"

O puede especificar el tipo de contenido como texto/html en el cuerpo del mensaje, como se muestra en el siguiente ejemplo:

#!/usr/bin/python

import smtplib

message = """De: De persona

A : A la persona

Versión MIME: 1.0

Tipo de contenido: texto/html

Asunto: correo electrónico HTML SMTP prueba

Este es un correo electrónico

l mensaje que se enviará en formato HTML

Este es un mensaje HTML.

Este es el título.

"""

prueba:

smtpObj = smtplib.SMTP('localhost')

smtpObj.sendmail(remitente, destinatarios, mensaje)

imprimir "Correo electrónico enviado correctamente"

excepto SMTPException:

imprimir "Error: no se puede enviar el correo electrónico"

Python envía un correo electrónico con archivos adjuntos

Para enviar un correo electrónico con un archivo adjunto, primero debe crear una instancia MIMEMultipart(), luego construir el archivo adjunto. Si hay varios archivos adjuntos, puede construirlos en secuencia y finalmente enviarlos usando smtplib.smtp. .

desde email.mime.text importar MIMEText

desde email.mime.multipart importar MIMEMultipart

importar smtplib

#Crear una banda Ejemplo de archivo adjunto

msg = MIMEMultipart()

#Construir archivo adjunto 1

att1 = MIMEText(open('d:\\123.rar', ' rb').read(), 'base64', 'gb2312')

att1["Content-Type"] = 'aplicación/octet-stream'

att1["Contenido -Disposition"] = 'attachment; filename="123.doc"'#El nombre del archivo aquí se puede escribir arbitrariamente, sea cual sea el nombre escrito y el nombre que se muestra en el correo electrónico

msg.attach(att1 )

#Construir archivo adjunto 2

att2 = MIMEText(open('d:\\123.txt', 'rb').read(), 'base64', 'gb2312 ')

att2["Content-Type"] = 'aplicación/octeto-stream'

att2["Content-Disposition"] = 'archivo adjunto="123.txt "'

msg.attach(att2)

#Agregar encabezado de correo electrónico

msg['to'] = 'YYY@YYY.com'

msg ['from'] = 'XXX@XXX.com'

msg['subject'] = 'hola mundo'

#Enviar correo electrónico

pruebe:

servidor = smtplib.SMTP()

server.connect('smtp.XXX.com')

server.login(' XXX','XXXXX ')#XXX es el nombre de usuario, XXXXX es la contraseña

server.sendmail(msg['from'], msg['to'],msg.as_string())

servidor .quit()

imprimir 'enviado correctamente'

excepto excepción, e:

imprimir str(e)

Los siguientes ejemplos especifican Cambiar el encabezado de tipo de contenido a multiparte/mixto y enviar el archivo de texto /tmp/test.txt:

#!/usr/bin/python

importar smtplib

importar base64

filename = "/tmp/test.txt"

# Leer el contenido del archivo y usar codificación base64

fo = open(nombre de archivo, "rb")

filecontent = fo.read()

contenido codificado = base64.b64encode(filecontent) # base64

remitente = 'webmaster@tutorialpoint.com '

recibidor = 'amrood.a

dmin@gmail.com'

marker = "AUNIQUEMARKER"

body ="""

Este es un correo electrónico de prueba para enviar un archivo adjunto.

"""

# Definir información del encabezado

part1 = """De: De la persona

A: A la persona

Asunto: Envío de archivo adjunto

Versión MIME: 1.0

Tipo de contenido: límite multiparte/mixto; =%s

--%s

""" % (marcador, marcador)

# Definir acción del mensaje

part2 = """Tipo de contenido: texto/sin formato

Codificación de transferencia de contenido:8 bits

%s

--%s

""" % (cuerpo,marcador)

# Definir partes cercanas

part3 = """Tipo de contenido: multiparte/mixto; nombre=\"%s\"

Codificación-transferencia-de-contenido:base64

Disposición-de-contenido: archivo adjunto; nombre de archivo=%s

%s

--% s --

""" %(nombre de archivo, nombre de archivo, contenido codificado, marcador)

mensaje = parte1 + parte2 + parte3

prueba:

smtpObj = smtplib.SMTP('localhost')

smtpObj.sendmail(remitente, destinatario, mensaje)

imprimir "Correo electrónico enviado correctamente"

excepto Excepción:

imprimir "Error: no se puede enviar el correo electrónico"