Red de conocimiento informático - Conocimiento informático - Cómo enviar correo de calendario a través de Python

Cómo enviar correo de calendario a través de Python

Para mayor comodidad, hablemos en código (es solo la versión más simple. Para diversos requisitos de personalización, consulte rfc. Sin embargo, muchos efectos requieren soporte del cliente y el mejor soporte es Outlook)

# codificación: utf-8

importar smtplib

desde correo electrónico.MIMEMultipart importar MIMEMultipart

desde correo electrónico.MIMEBase importar MIMEBase

desde correo electrónico.MIMEText importar MIMEText

importar sistema operativo, fecha y hora

def send_email(**kwargs):

"""

método

evento

dtstart

debido

msg

dtstamp

"" "

ical = """

BEGIN:VCALENDAR\r\n

PRODID:pyICSParser\r\n

MÉTODO: %( método)s\r\n

VERSIÓN:2.0\r\n

COMIENZO:%(evento)s\r\n

DTSTART: %( dtstart)s\r\n

VENCIMIENTO:%(debido)s\r\n

PRIORIDAD:1\r\n

RESUMEN: %( msg)s\r\n

UID:calsrv.example.com-873970198738777-00@example.com\r\n

SECUENCIA:0\r\n

DTSTAMP:%(dtstamp)s\r\n

ESTADO:%(status)s\r\n

FIN:VEVENT\r\n

END:VCALENDAR\r\n

"""% kwargs

eml_body = u"%(msg)s" % kwargs

msg = MIMEMultipart('mixed')

msg['Date'] = formatdate(localtime=True)

msg['Subject'] = u"%(msg)s " % kwargs

msg['To'] = ",".join(asistentes)

part_email = MIMEText(eml_body,"html",'utf-8')

part_cal = MIMEText(ical,'calendar;method=%(method)s'%kwargs,'utf-8')

msgAlternative = MIMEMultipart('alternative')

msg.attach(msgAlternative)

ical_atch = MIMEBase('application/ics',' ;name="%s"'%("invite.ics"))

ical_atch .set_payload(ical)

Encoders.encode_base64(ical_atch)

ical_atch.add_header('Content-Disposition', 'attachmen

t; filename="%s"'%("invite.ics"))

eml_atch = MIMEBase('text/plain','')

Codificadores.encode_base64(eml_atch )

eml_atch.add_header('Content-Transfer-Encoding', "")

msgAlternative.attach(part_email)

msgAlternative.attach(part_cal)

s = smtplib.SMTP()

s.connect('xxxx')

s.login(' ', ' ')

s.sendmail('auto@sys.com', asistentes, msg.as_string())

s.close()

asistentes =['x@sys.com ']

fro = ""

ddtstart = datetime.datetime.utcnow()

dur = datetime.timedelta(minutos= 5)

dtend = ddtstart + dur

dtend = dtend.strftime("%Y%m%dT%H%M%SZ")

send_email(method='PUBLISH' ,event='VTODO',dtstart=dtend,due=dtend,msg='publicar tarea',dtstamp=dtend, status="COMPLETADO")

send_email(method='REQUEST',event=' VTODO',dtstart=dtend,due=dtend,msg='solicitar tarea',dtstamp=dtend, status="NECESITA ACCIÓN")

send_email(method='PUBLISH',event='VEVENT', dtstart=dtend,due=dtend,msg='publicar calendario',dtstamp=dtend, status="CONFIRMADO")

enviar_email(method='REQUEST',event='VEVENT',dtstart=dtend, due=dtend,msg='solicitar calendario',dtstamp=dtend, status='CONFIRMADO')