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') p>
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')