Hatena::Grouprubyist

Going My Ruby Way このページをアンテナに追加 RSSフィード

Ruby ロゴ (C) Ruby Association LLC

2010年11月03日(水)

vCard の作り方メモ

| 15:11 |  vCard の作り方メモ - Going My Ruby Way を含むブックマーク はてなブックマーク -  vCard の作り方メモ - Going My Ruby Way  vCard の作り方メモ - Going My Ruby Way のブックマークコメント

vCard の作り方の例。古いメモです。

#!/usr/bin/env ruby

require 'vpim/vcard'
require 'vpim/maker/vcard'

puts card = Vpim::Maker::Vcard.make('YAMADA,Taro') {|card|
   card.add_name {|name|
       name.family = 'YAMADA'
       name.given = 'Taro'
   }

   card.add_tel('03-1234-5678')

   card.add_email('email-address@foo.domain.jp')
}

Ruby/TMail についてのメモ

| 15:10 |  Ruby/TMail についてのメモ - Going My Ruby Way を含むブックマーク はてなブックマーク -  Ruby/TMail についてのメモ - Going My Ruby Way  Ruby/TMail についてのメモ - Going My Ruby Way のブックマークコメント

TMail のインストールメモ。昔のメモです。

$ wget http://i.loveruby.net/archive/tmail/tmail-0.10.8.tar.gz
$ tar zxvf tmail-0.10.8.tar.gz
$ cd tmail-0.10.8/
$ ruby setup.rb config
$ ruby setup.rb setup
$ su
# ruby setup.rb install

メールボックスの読み出し例

#!/usr/bin/env ruby
$KCODE = 'EUC-JP'

require 'tmail'

loader = TMail::MhLoader?.new('/home/user/Mail/inbox/')
loader.each {|port|
    begin
        mail = TMail::Mail.new(port)
        puts mail
    rescue TMail::SyntaxError?
    end
}

メールの送信例

#!/usr/bin/env ruby
$KCODE = 'EUC-JP'

require 'kconv'
require 'tmail'
require 'net/smtp'

mail = TMail::Mail.new
mail.to = 'to-someone.foo.or.jp'
mail.from = 'from-someone.bar.or.jp'
mail.subject = 'これはテストです'.tojis
mail.date = Time.now
mail.mime_version = '1.0'

message = TMail::Mail.new
message.set_content_type('text', 'plain', 'charset' => 'ISO-2022-JP')
message.transfer_encoding = '7bit'
message.body = "vCard が添付されています.\n".tojis
mail.parts.push(message)

filename = 'vCard.vcf'
vcard = open(filename).read
encoded_vcard = [vcard].pack('m').chomp.gsub(/.{76}/, "\\1\n")
attachment =  attachment.body = encoded_vcard
attachment.transfer_encoding = 'base64'
attachment.set_content_type('text','x-vcard', 'name' => filename)
attachment.set_content_disposition('attachment', 'filename' =>  filename)
mail.parts.push(attachment)

Net::SMTP.start('mail.server.or.jp') {|smtp|
   smtp.sendmail(mail.encoded, mail.from, mail.t
}