El Envío De Las Invitaciones A Reuniones Con Python

Soy bastante nuevo en Python y estoy tratando de crear una secuencia de comandos que recopila los datos de nuestra base de datos y convierte los datos en conjuntos. A continuación, toma los conjuntos de datos y genera ICS (icalendar), objetos (mediante icalendar http://codespeak.net/icalendar/).

El problema que me estoy quedando en el correo electrónico de parte, soy capaz de enviarnos un correo y adjuntar el archivo ICS pero cuando el llega el correo es un correo electrónico con un archivo adjunto. Yo estaba realmente esperando el correo electrónico para ser visto como una invitación a una reunión donde solo presiona «aceptar». ¿Hay algo que pueda hacer para enviar el archivo ICS como una solicitud de reunión?

Gracias

OriginalEl autor Ricky | 2011-01-28

2 Kommentare

  1. 16

    a continuación es lo que funcionó para mí el envío invita a través de python sobre gmail (trabajado con google calendar, outlook y outlook.com (live/hotmail):

    import smtplib
    from email.MIMEMultipart import MIMEMultipart
    from email.MIMEBase import MIMEBase
    from email.MIMEText import MIMEText
    from email.Utils import COMMASPACE, formatdate
    from email import Encoders
    import os,datetime
    
    CRLF = "\r\n"
    login = "[email protected]"
    password = "yourpassword"
    attendees = ["[email protected]",     "[email protected]","[email protected]"]
    organizer = "ORGANIZER;CN=organiser:mailto:first"+CRLF+" @gmail.com"
    fro = "nickname <[email protected]>"
    
    ddtstart = datetime.datetime.now()
    dtoff = datetime.timedelta(days = 1)
    dur = datetime.timedelta(hours = 1)
    ddtstart = ddtstart +dtoff
    dtend = ddtstart + dur
    dtstamp = datetime.datetime.now().strftime("%Y%m%dT%H%M%SZ")
    dtstart = ddtstart.strftime("%Y%m%dT%H%M%SZ")
    dtend = dtend.strftime("%Y%m%dT%H%M%SZ")
    
    description = "DESCRIPTION: test invitation from pyICSParser"+CRLF
    attendee = ""
    for att in attendees:
        attendee += "ATTENDEE;CUTYPE=INDIVIDUAL;ROLE=REQ-    PARTICIPANT;PARTSTAT=ACCEPTED;RSVP=TRUE"+CRLF+" ;CN="+att+";X-NUM-GUESTS=0:"+CRLF+" mailto:"+att+CRLF
    ical = "BEGIN:VCALENDAR"+CRLF+"PRODID:pyICSParser"+CRLF+"VERSION:2.0"+CRLF+"CALSCALE:GREGORIAN"+CRLF
    ical+="METHOD:REQUEST"+CRLF+"BEGIN:VEVENT"+CRLF+"DTSTART:"+dtstart+CRLF+"DTEND:"+dtend+CRLF+"DTSTAMP:"+dtstamp+CRLF+organizer+CRLF
    ical+= "UID:FIXMEUID"+dtstamp+CRLF
    ical+= attendee+"CREATED:"+dtstamp+CRLF+description+"LAST-MODIFIED:"+dtstamp+CRLF+"LOCATION:"+CRLF+"SEQUENCE:0"+CRLF+"STATUS:CONFIRMED"+CRLF
    ical+= "SUMMARY:test "+ddtstart.strftime("%Y%m%d @ %H:%M")+CRLF+"TRANSP:OPAQUE"+CRLF+"END:VEVENT"+CRLF+"END:VCALENDAR"+CRLF
    
    eml_body = "Email body visible in the invite of outlook and outlook.com but not google calendar"
    eml_body_bin = "This is the email body in binary - two steps"
    msg = MIMEMultipart('mixed')
    msg['Reply-To']=fro
    msg['Date'] = formatdate(localtime=True)
    msg['Subject'] = "pyICSParser invite"+dtstart
    msg['From'] = fro
    msg['To'] = ",".join(attendees)
    
    part_email = MIMEText(eml_body,"html")
    part_cal = MIMEText(ical,'calendar;method=REQUEST')
    
    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', 'attachment; filename="%s"'%("invite.ics"))
    
    eml_atch = MIMEBase('text/plain','')
    Encoders.encode_base64(eml_atch)
    eml_atch.add_header('Content-Transfer-Encoding', "")
    
    msgAlternative.attach(part_email)
    msgAlternative.attach(part_cal)
    
    mailServer = smtplib.SMTP('smtp.gmail.com', 587)
    mailServer.ehlo()
    mailServer.starttls()
    mailServer.ehlo()
    mailServer.login(login, password)
    mailServer.sendmail(fro, attendees, msg.as_string())
    mailServer.close()

    OriginalEl autor Auberon Vacher

  2. 7

    Lo que hicimos.

    1. Crear una invitación a una reunión

    2. Correo electrónico a mí mismo. Asegúrese de que todas las cosas deseables. («el correo electrónico para ser visto como una invitación a una reunión donde usted sólo tiene que pulsar el botón ‘aceptar'»)

    3. Guardar ese correo y el archivo adjunto. Es el punto de referencia.

    4. Construir el archivo ICS en Python que se ve exactamente como el MS-Office adjunto. No es completamente estándar. http://en.wikipedia.org/wiki/ICalendar

    5. Asegúrese de que el exacta tipo MIME correcto es en el archivo adjunto, también. IIRC es text/calendar.

    OriginalEl autor S.Lott

Kommentieren Sie den Artikel

Bitte geben Sie Ihren Kommentar ein!
Bitte geben Sie hier Ihren Namen ein

Pruebas en línea