コマンドラインからgmail経由でメールを送るRubyスクリプト

    なにかのアイデアを忘れないように、アイデアは思いついたときにgmailや会社のメールのInboxへリマインダメールを放り込む習慣がある。

    コマンドラインからサクッとメールを送信するスクリプトを作成しました。

    以下の記事を参考にしました。ありがとうございます。

    事前準備として、以下をインストールする必要があります。

    gem install mail
    gem install tlsmail

    Warningエラーがたくさんでるので、対策が必要。これはgmailが原因のようだ。

    /home/tsu-nera/.rbenv/versions/2.1.0/lib/ruby/gems/2.1.0/gems/tlsmail-0.0.1/lib/net/smtp.rb:806: warning: already initialized constant Net::SMTPSession
    /home/tsu-nera/.rbenv/versions/2.1.0/lib/ruby/2.1.0/net/smtp.rb:1063: warning: previous definition of SMTPSession was here
    /home/tsu-nera/.rbenv/versions/2.1.0/lib/ruby/gems/2.1.0/gems/tlsmail-0.0.1/lib/net/pop.rb:687: warning: already initialized constant Net::POP
    /home/tsu-nera/.rbenv/versions/2.1.0/lib/ruby/gems/2.1.0/gems/tlsmail-0.0.1/lib/net/pop.rb:687: warning: previous definition of POP was here
    /home/tsu-nera/.rbenv/versions/2.1.0/lib/ruby/gems/2.1.0/gems/tlsmail-0.0.1/lib/net/pop.rb:688: warning: already initialized constant Net::POPSession
    /home/tsu-nera/.rbenv/versions/2.1.0/lib/ruby/gems/2.1.0/gems/tlsmail-0.0.1/lib/net/pop.rb:688: warning: previous definition of POPSession was here
    /home/tsu-nera/.rbenv/versions/2.1.0/lib/ruby/gems/2.1.0/gems/tlsmail-0.0.1/lib/net/pop.rb:689: warning: already initialized constant Net::POP3Session
    /home/tsu-nera/.rbenv/versions/2.1.0/lib/ruby/gems/2.1.0/gems/tlsmail-0.0.1/lib/net/pop.rb:689: warning: previous definition of POP3Session was here
    /home/tsu-nera/.rbenv/versions/2.1.0/lib/ruby/gems/2.1.0/gems/tlsmail-0.0.1/lib/net/pop.rb:702: warning: already initialized constant Net::APOPSession
    /home/tsu-nera/.rbenv/versions/2.1.0/lib/ruby/gems/2.1.0/gems/tlsmail-0.0.1/lib/net/pop.rb:702: warning: previous definition of APOPSession was here

    以下のサイトを参考に対策を実施。

    • ruby on rails – warning: already initialized constant after installing tlsmail gem? – Stack Overflow

      require 'net/smtp'
      Net.instance_eval {remove_const :SMTPSession} if defined?(Net::SMTPSession)
      
      require 'net/pop'
      Net::POP.instance_eval {remove_const :Revision} if defined?(Net::POP::Revision)
      Net.instance_eval {remove_const :POP} if defined?(Net::POP)
      Net.instance_eval {remove_const :POPSession} if defined?(Net::POPSession)
      Net.instance_eval {remove_const :POP3Session} if defined?(Net::POP3Session)
      Net.instance_eval {remove_const :APOPSession} if defined?(Net::APOPSession)
      
      require 'tlsmail'

    スクリプトは以下のとおりです。