`

win32ole操作outlook

阅读更多
通过win32ole我们可以操作outlook,例如平时我们所常用到的发送邮件和建立日程提醒等。这样的话,我们就可以用程序的功能而取代了实际上对outlook的操作。

1.发送邮件
#Send Email with Ruby
#Before you use ruby to send your email, please configure your outlook 
require 'win32ole'  
outlook = WIN32OLE('Outlook.Application')   
message = outlook.CreateItem(0)   
message.Subject = 'Subject line here'  
message.Body = 'This is the body of your message.'  
message.To = 'xiaofan2350@yahoo.com.cn'  
message.Attachments.Add('c:\really。txt', 1)   
message.Send 


2.建立日程提醒
#Outlook Appointments with Ruby 
#We can use ruby to add appointmengs to the outlook calender,then read on.
require 'win32ole'
require 'date' 
class Outlook   
  OLFolderCalendar = 9
  OLAppointmentItem = 1
  OLFree = 0
  OLTentative = 1
  OLBusy = 2
  SEC = 1
  MIN = 60 * SEC
  HOUR = MIN * 60
  
  def initialize( busy_default = Outlook::OLBusy )
    @ol = WIN32OLE.new( "Outlook.Application" )
    @busy_default = busy_default 
  end   
  
  def appointment(opts)
    opts[:busy_status] ||= @busy_default     
    ol_appt = @ol.CreateItem(OLAppointmentItem)
    ol_appt.Start = opts[:start]
    ol_appt.End =  opts[:end]
    ol_appt.Subject = opts[:subject]
    ol_appt.Location = opts[:location]
    ol_appt.Body = opts[:body]
    ol_appt.BusyStatus =  opts[:busy_status] 
    ol_appt.ReminderSet = opts[:set_reminder?]
    ol_appt.ReminderMinutesBeforeStart = opts[:reminder_minutes]
    ol_appt.Save
  end 
    
  def self.add_appointment 
    outlook = Outlook.new
    start_time = Time.local( 2008, 8, 8, 19,  0, 0 )
    end_time  = start_time + ( 120 *  Outlook::MIN )
    ol.add_appointment :start => start_time,         #接受的是Timer对象
                       :end => end_time  ,
                       :subject => 'Welcome to Beijing!',  #主题
                       :location => "Beijing",      #地点
                       :body => 'One World One Dream', #内容
                       :set_reminder? => true,       #是否提醒
                       :reminder_minutes => 15       #提醒时间周期

  end 
end 


由于在我的项目中程序字符集是UTF-8,所以发送邮件或设置提醒的时候要转换字符集(gbk)。否则的话,发送的中文是乱码。eg.
require 'iconv'
cov = Iconv.new( 'gbk', 'utf-8')  
puts cov.iconv("北京奥运会!")
分享到:
评论

相关推荐

    win32ole mapi开发

    在IT行业中,`Win32OLE`、`MAPI` 和 `Outlook` 是与Windows平台上电子邮件编程密切相关的技术。`Win32OLE`(Windows Interface for Object Linking and Embedding)是Microsoft提供的一种接口,允许Ruby等脚本语言与...

    win32ole-mapi

    在提供的文件"outlook code.mht"和"outlook code.txt"中,可能包含具体的Python代码示例,演示了如何使用win32ole与Outlook的MAPI接口进行交互。这些代码通常会展示如何创建邮件、设置属性,以及发送邮件等操作。 ...

    node-win32ole:node.js的异步,非阻塞win32ole绑定

    win32ole使从node.js到Excel,Word,Access,Outlook,InternetExplorer,WSH(ActiveXObject / COM)等的可访问性成为可能。 它不需要TypeLibrary。用法使用npm install win32ole 。 它的作用是...(版本0.1.x) ...

    Delphi开发技巧之-object

    取已注册Win32模块和它们版本 在Delphi中播放 Flash 在Excel内查看TDataSet 备份Outlook附件 将Word文档保存为Rtf 打印 预览MS Access报表 找回Outlook文件夹列表 替换word文档中的文本 检查 Word, Excel, Access, ...

    集成Skype的Outlook加载项

    5. **Win32**:Windows API的一部分,提供了与操作系统交互的函数库,用于开发32位Windows应用程序。 6. **Dev OLE**:OLE(Object Linking and Embedding)是COM的前身,允许不同应用程序间的数据共享和嵌入对象。 ...

    Vim Add-In for Microsoft Outlook-开源

    cubelevim是一个COM加载项,允许在Vim实例中编辑Microsoft Outlook消息(和一些其他对象)。 用Visual Basic编写,并使用Win32 OLE版本的Vim,它适用于停留在小隔间中工作的UNIX用户。

    perl自动发邮件

    不过,可以使用第三方模块如`Win32::OLE`来直接操作Outlook对象模型,从而发送邮件。这种方式适用于在同一台运行Outlook的计算机上执行Perl脚本的情况。 在提供的压缩包文件"Perl_mail"中,可能包含了一个或多个...

    Grid V2.0--专业的网格报表控件

    #Grid (SharpGrid) 2.0是面向数据库、功能完善的ActiveX网格控件,可用于绑定(OLEDB和ICursor)、非绑定和虚拟数据模式。#Grid拥有目前主流网格控件的所有功能:快速方便地处理列表数据,强大的显示功能、使用方便...

    Access 2000数据库系统设计(PDF)---018

    1567.4 使用Microsoft Outlook和Exchange文件夹 1567.4.1 用Outlook导出和导入Jet 4.0表 1577.4.2 使用Exchange/Outlook向导的链接 1597.5 导入文本文件 1607.5.1 使用导入文本向导 1617.5.2 导入文本向导的高级选项...

    Access 2000数据库系统设计(PDF)---002

    1517.3.2 链接Excel工作表 1567.4 使用Microsoft Outlook和Exchange 文件夹 1567.4.1 用Outlook导出和导入Jet 4.0表 1577.4.2 使用Exchange/Outlook向导的链接 1597.5 导入文本文件 1607.5.1 使用导入文本向导 1617....

    Access 2000数据库系统设计(PDF)---011

    1567.4 使用Microsoft Outlook和Exchange文件夹 1567.4.1 用Outlook导出和导入Jet 4.0表 1577.4.2 使用Exchange/Outlook向导的链接 1597.5 导入文本文件 1607.5.1 使用导入文本向导 1617.5.2 导入文本向导的高级选项...

    Access 2000数据库系统设计(PDF)---020

    1567.4 使用Microsoft Outlook和Exchange文件夹 1567.4.1 用Outlook导出和导入Jet 4.0表 1577.4.2 使用Exchange/Outlook向导的链接 1597.5 导入文本文件 1607.5.1 使用导入文本向导 1617.5.2 导入文本向导的高级选项...

    Access 2000数据库系统设计(PDF)---003

    1517.3.2 链接Excel工作表 1567.4 使用Microsoft Outlook和Exchange 文件夹 1567.4.1 用Outlook导出和导入Jet 4.0表 1577.4.2 使用Exchange/Outlook向导的链接 1597.5 导入文本文件 1607.5.1 使用导入文本向导 1617....

    Access 2000数据库系统设计(PDF)---009

    1517.3.2 链接Excel工作表 1567.4 使用Microsoft Outlook和Exchange 文件夹 1567.4.1 用Outlook导出和导入Jet 4.0表 1577.4.2 使用Exchange/Outlook向导的链接 1597.5 导入文本文件 1607.5.1 使用导入文本向导 1617....

    Access 2000数据库系统设计(PDF)---001

    1517.3.2 链接Excel工作表 1567.4 使用Microsoft Outlook和Exchange 文件夹 1567.4.1 用Outlook导出和导入Jet 4.0表 1577.4.2 使用Exchange/Outlook向导的链接 1597.5 导入文本文件 1607.5.1 使用导入文本向导 1617....

    Access 2000数据库系统设计(PDF)---015

    1567.4 使用Microsoft Outlook和Exchange文件夹 1567.4.1 用Outlook导出和导入Jet 4.0表 1577.4.2 使用Exchange/Outlook向导的链接 1597.5 导入文本文件 1607.5.1 使用导入文本向导 1617.5.2 导入文本向导的高级选项...

    Access 2000数据库系统设计(PDF)---012

    1567.4 使用Microsoft Outlook和Exchange文件夹 1567.4.1 用Outlook导出和导入Jet 4.0表 1577.4.2 使用Exchange/Outlook向导的链接 1597.5 导入文本文件 1607.5.1 使用导入文本向导 1617.5.2 导入文本向导的高级选项...

    Access 2000数据库系统设计(PDF)---027

    1567.4 使用Microsoft Outlook和Exchange文件夹 1567.4.1 用Outlook导出和导入Jet 4.0表 1577.4.2 使用Exchange/Outlook向导的链接 1597.5 导入文本文件 1607.5.1 使用导入文本向导 1617.5.2 导入文本向导的高级选项...

    Access 2000数据库系统设计(PDF)---025

    1567.4 使用Microsoft Outlook和Exchange文件夹 1567.4.1 用Outlook导出和导入Jet 4.0表 1577.4.2 使用Exchange/Outlook向导的链接 1597.5 导入文本文件 1607.5.1 使用导入文本向导 1617.5.2 导入文本向导的高级选项...

Global site tag (gtag.js) - Google Analytics