LoginSignup
7
7

More than 5 years have passed since last update.

rubyでevernoteにノートを送る

Posted at

rubyから任意のデータをevernoteに送信します。
定期的なレポートなどのために調べたので、高度な処理は考えていません。

そのため、データの送信はEvernote APIではなく、
gmailからevernoteのメールアドレスに送信することにします。

コード

tlsmailとmailを使っていますので、インストールしておいてください。
メールの添付ファイルを使うことで、evernoteに画像を入れることにも成功しています。

evernote_send.rb
require 'yaml'

# これをやらないと警告が沢山出る
# http://stackoverflow.com/questions/8783400/warning-already-initialized-constant-after-installing-tlsmail-gem
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'
require 'mail'

class SendEvernote
  def initialize(evernote_mail, gmail_account, gmail_pass)
    @smtpserver = Net::SMTP.new('smtp.gmail.com',587)
    @smtpserver.enable_tls(OpenSSL::SSL::VERIFY_NONE)

    @evernote_mail = evernote_mail

    @gmail_account = gmail_account
    @gmail_pass = gmail_pass

    # まとめて送るのでそれ用のバッファ
    @buffer = []
  end

  def addNote(subject, body, files)
    mail = Mail.new

    mail[:from] = @gmail_account
    mail[:to] = @evernote_mail
    mail.subject = subject
    mail.body = body
    files.each do |path|
      mail.add_file(path)
    end

    @buffer << mail
  end

  def send
    @smtpserver.start('gmail.com',@gmail_account, @gmail_pass, :login) do |smtp|
      @buffer.each do |mail|
        smtp.send_message(mail.encoded, mail.from, mail.to)
      end
      @buffer.clear
    end
  end
end

config = YAML.load_file("evernote.yml")
send_evernote = SendEvernote.new(config["evernote_mail"], config["gmail_account"], config["gmail_pass"])

send_evernote.addNote("test", "this is test", ["logo-new.png", "logo.png"])
send_evernote.send

結果

スクリーンショット 2014-03-16 17.40.24.png

7
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
7