`
iyuan
  • 浏览: 469985 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

如何通过python发送日历邮件(ics)

阅读更多
email的rfc:https://tools.ietf.org/html/rfc2446

方便起见,用代码说话(只是最简单的版本,各种定制需求可以参看rfc,不过很多效果需要客户端的支持,支持的比较好的是outlook)

# encoding: utf-8

import smtplib
from email.MIMEMultipart import MIMEMultipart
from email.MIMEBase import MIMEBase
from email.MIMEText import MIMEText
import os,datetime


def send_email(**kwargs):
    """
    method
    event
    dtstart
    due
    msg
    dtstamp
    """
    ical = """
    BEGIN:VCALENDAR\r\n
    PRODID:pyICSParser\r\n
    METHOD:%(method)s\r\n
    VERSION:2.0\r\n
    BEGIN:%(event)s\r\n
    DTSTART:%(dtstart)s\r\n
    DUE:%(due)s\r\n
    PRIORITY:1\r\n
    SUMMARY:%(msg)s\r\n
    UID:calsrv.example.com-873970198738777-00@example.com\r\n
    SEQUENCE:0\r\n
    DTSTAMP:%(dtstamp)s\r\n
    STATUS:%(status)s\r\n
    END: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(attendees)

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

    s = smtplib.SMTP()
    s.connect('xxxx')
    s.login(' ', ' ')
    s.sendmail('auto@sys.com', attendees, msg.as_string())
    s.close()

attendees =['x@sys.com']
fro = ""

ddtstart = datetime.datetime.utcnow()
dur = datetime.timedelta(minutes= 5)
dtend = ddtstart + dur
dtend = dtend.strftime("%Y%m%dT%H%M%SZ")

send_email(method='PUBLISH',event='VTODO',dtstart=dtend,due=dtend,msg='publish 任务',dtstamp=dtend, status="COMPLETED")
send_email(method='REQUEST',event='VTODO',dtstart=dtend,due=dtend,msg='request 任务',dtstamp=dtend, status="NEEDS ACTION")
send_email(method='PUBLISH',event='VEVENT',dtstart=dtend,due=dtend,msg='publish 日历',dtstamp=dtend, status="CONFIRMED")
send_email(method='REQUEST',event='VEVENT',dtstart=dtend,due=dtend,msg='request 日历',dtstamp=dtend, status='CONFIRMED')

0
0
分享到:
评论

相关推荐

    Python库 | python_ics-3.0-cp36-cp36m-win32.whl

    总的来说,`python_ics`库是一个用于Python的iCalendar处理工具,适用于需要与ical格式数据打交道的应用场景,如日历应用、会议管理软件或者自动化任务调度系统。它简化了ical文件的读写操作,让开发者能更专注于...

    Python库 | python_ics-2.16-cp33-cp33m-win32.whl

    总的来说,`python_ics`是一个强大且易用的Python库,它简化了iCalendar文件的处理,为开发者提供了快速构建日历应用的途径。无论你是想在Web应用中添加日历功能,还是需要处理日程安排,这个库都是一个理想的选择。...

    PyPI 官网下载 | python_ics-2.9-cp34-cp34m-win32.whl

    通过这个库,开发者可以轻松地读取、创建和修改ics文件,支持各种日历应用,如Google Calendar、Apple iCal等。 **2. 版本和兼容性** “2.9”是该库的版本号,表示这是`python_ics`的第2.9次更新。"cp34"代表...

    Python生成2022卡塔尔世界杯赛程日历订阅源代码,生成ics文件,带日历提醒

    Python生成2022卡塔尔世界杯赛程日历订阅源代码,不错过每一场比赛,直接运行main.py即可,首先从百度体育抓取最新2022卡塔尔世界杯赛程日历,已完赛部分爬取比分,然后生成两个ics文件,worldcup2022_alarms.ics带...

    Google Calendar Search:使用 ICS 格式在谷歌日历或任何其他日历中搜索-开源

    在这个特定项目中,开发人员使用 Python 或类似工具解析 ICS 文件,提取其中的日历事件信息,然后将这些信息存储在 MySQL 数据库中。MySQL 是一个广泛使用的开源关系型数据库管理系统,它提供了高效的数据存储和检索...

    转换ICS到CVS

    在Python编程环境中,这种转换可以通过读取ICS文件的内容,解析其结构,然后将数据写入CSV文件来实现。Python的`ics`库可以用来处理ICS文件,而`csv`模块则用于处理CSV文件操作。以下是详细的步骤: 1. **安装依赖...

    Python-Khal基于标准的CLI和终端日历程序

    4. **iCalendar兼容**:Khal与iCalendar(.ics)格式兼容,这意味着它可以与其他常见的日历软件(如Google Calendar、Apple Calendar等)无缝集成。 5. **定制化**:用户可以通过配置文件自定义显示样式、颜色和...

    sleepbot2ical:python 脚本将 sleepbot .csv 转换为 ical 日历

    sleepbot2ical 通过 Ludovic Lacoste 将 .csv 从 mysleepbot.com 转换为 .ics ical 日历的 Python 脚本 是 SleepBot Android 应用程序的主页: : id com.lslk.sleepbot fr 依赖项:

    Python库 | calparse-0.3.tar.gz

    这个库是Python开发者用于解析日历格式数据的一个工具,特别适用于处理与日期、时间相关的任务。`calparse`库使得从不同格式的日历文件中提取信息变得简单易行。 首先,让我们了解一下`tar.gz`文件。这是一种常见的...

    日历项目notion2calendar.zip

    4. **数据同步**:通过Google Calendar API或者其他日历应用的API,将这些事件添加到目标日历应用中。这可能涉及到OAuth2.0授权流程,以确保安全地访问用户的日历账户。 5. **错误处理和用户界面**:项目可能还包含...

    Qi:SZTU教务系统课程表转换为ics日历

    替换ics通过邮件发送到iOS设备上,通过系统自带的邮件App可以直接将日历导入,建议在导入前新建一个新的日历分区macOS用户可以直接导入ics文件获取日历相关捷径前往项目在线地址补课2020年国庆及中秋节放假,补课...

    日历编程合集

    另外,如果涉及多平台的日历同步,比如与Google日历或Apple日历的集成,就需要理解API调用和数据交换的规范,例如使用iCalendar(.ics)文件格式,这是一种标准的格式,可以用来共享和导入日历数据。 最后,用户...

    日历制作小程序

    6. **导入导出功能**:可能提供导入其他日历格式(如.ics或.csv)的功能,方便用户从其他应用程序迁移数据,或导出数据备份。 7. **隐私保护**:考虑到个人数据的安全,程序可能会有密码保护或加密功能,确保用户的...

    Python库 | tweetcal-0.4.2-py2-none-any.whl

    Python库tweetcal-0.4.2-py2-none-any.whl是一个用于处理Twitter日历事件的Python开发工具。这个库特别适用于后端开发者,它提供了集成Twitter数据并将其转化为日历格式的功能,使得用户可以方便地管理和查看与...

    日历原代码

    最后,考虑到可扩展性和兼容性,日历原代码可能需要遵循一些标准或协议,如iCalendar(.ics)文件格式,它允许日历数据在不同应用之间交换。这种格式包含了事件、任务、日程等信息,可以被Outlook、Google Calendar...

    Python库 | types-vobject-0.9.7.tar.gz

    1. **安装**:首先,你可以通过Python的包管理器pip进行安装: ``` pip install types-vobject ``` 2. **vCard操作**:读取vCard文件并打印其内容: ```python from vobject import readVCard with open('...

    Python库 | types-vobject-0.9.2.tar.gz

    Python库types-vobject-0.9.2是一个用于处理iCalendar和vCard数据的强大工具,主要针对那些需要处理日历和联系人信息的开发者。这个版本的库是0.9.2,通常会包含一系列的功能改进和错误修复,以提供更稳定的性能。在...

    ics:自动生成iCal(.ics)订阅文件

    - 通知与提醒:将事件信息封装在 iCalendar 文件中并通过电子邮件发送,用户打开即可自动添加到日历。 6. iCalendar 文件订阅: - 用户可以通过导入到支持 iCalendar 格式的日历应用(如 Google 日历、Apple 日历...

    AlbertToICS:将您的日程从 NYU Albert 导出到 ics 文件,以便能够将其导入任何日历

    为了解决这个问题,开发者创建了AlbertToICS,这是一个基于Python的小工具,它允许用户将NYU Albert的日程数据导出为ics格式,这是一种通用的日历交换格式,可以被大多数现代日历应用识别并导入。 **Python编程基础...

    Python库 | mds_pim_calendar-4.6.0.tar.gz

    5. **数据导入导出**:支持iCalendar(.ics)或其他常见日历格式的数据导入导出,方便在不同平台间同步日程。 6. **API接口**:提供RESTful API,允许与其他系统集成,如CRM、项目管理系统等,实现数据互通。 7. *...

Global site tag (gtag.js) - Google Analytics