2013年6月7日金曜日

送り先固定のgmail送信を機能とした,linda-gmailが動いたので記録

RubyやGemとかよくわからないまま,linda-skypeやその他多くのRubyでメイル送信記事から,見よう見まねで以下のように作成.
とりあえず動いたので記録しておく.
1.ファイル作成1
Gemfile
source "https://rubygems.org"

gem 'tmail'
gem 'tlsmail'
gem "sinatra-rocketio-linda"
2.ファイル作成2
linda-gmail.rb
#!/usr/bin/env ruby
# coding: utf-8
require 'rubygems'
require 'tmail'
require 'tlsmail'
require 'net/smtp'
require 'sinatra/rocketio/linda/client'
$stdout.sync = true

$smtp_server= "smtp.gmail.com"
$smtp_port= 587
$smtp_account= "xxx@yyyyy"
$smtp_password= "abcdefghijklmnop"

$mail_to= "aaa@bbbbb"

def send_mail_message(_subject, _body)
  retValue= true
  mail = TMail::Mail.new
  mail.to = $mail_to
  mail.from = $mail_account
  mail.subject = _subject
  mail.body = _body
  begin
    Net::SMTP.enable_tls(OpenSSL::SSL::VERIFY_NONE)
    Net::SMTP.start($smtp_server, $smtp_port, nil,
                    $smtp_account, $smtp_password, "plain") do |smtp|
      smtp.sendmail(mail.encoded, mail.from, mail.to)
    end
  rescue
    retValue= false
  end
  return retValue
end

url =   ENV["LINDA_BASE"]  || ARGV.shift || "http://localhost:5000"
space = ENV["LINDA_SPACE"] || "test"
puts "connecting.. #{url}"
linda = Sinatra::RocketIO::Linda::Client.new url
ts = linda.tuplespace[space]
 
linda.io.on :connect do
  puts "connect!! <#{linda.io.session}> (#{linda.io.type})"
  ts.watch ["mail", "send"] do |tuple|
    p tuple
    if tuple.size == 4
      puts subject = tuple[2]
      puts body = tuple[3]
      if send_mail_message(subject,  body)
        ts.write ["mail", "send", subject, body, "success"]
      else
        ts.write ["mail", "send", subject, body, "fail"]
      end
    end
  end
end

linda.io.on :disconnect do
  puts "RocketIO disconnected.."
end

linda.wait

  • "xxx@yyyyy"($stmp_account): gmailアカウント(そのままmail.toに設定している)
  • "abcdefghijklmnop"($smtp_password): gmailログインパスワード
    • (二重認証とかの場合,'アカウント>セキュリティ>アクセスを管理する>アプリケーション固有のパスワード>ステップ 1/2: 新しいアプリケーション固有のパスワードを生成する'とかでパスワードを発行)
  • "aaa@bbbbb"($mail_to): 送信先メイルアドレス

3.設定
$ sudo gem install bundler
$ bundle install
Gemfile.lockができる

4.実行
$ bundle exec ruby linda-gmail.rb

5.以下のURLなどから呼出し
http://localhost:5000/test/mail/send/実験/実験結果?

0 件のコメント: