質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.50%

  • Ruby

    7675questions

    Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

  • Ubuntu

    1407questions

    Ubuntuは、Debian GNU/Linuxを基盤としたフリーのオペレーティングシステムです。

  • シェルスクリプト

    95questions

fetchmailからrubyのメール処理

解決済

回答 1

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 148

naonao11

score 58

開発環境:ubuntu 18.0.4

したいこと

fetchmailを用いてメールを取ってき,textProcessing.rbにメールの内容を入れ特定の処理を行い,csvファイルにFROM , 氏名 を取ってきたく思います。
まずはテキストファイルとして保存することから始めました。

fetchmailの設定内容について

set daemon 10800

defaults
 uidl
 no mimedecode
 no rewrite
 mda /home/name/process/textProcessing.rb       # メールを渡すプログラムのフル>パス
keep

poll mail.example.jp protocol POP3
 username example@example.jp
 password xxxxxxxx
ssl

textProcessing.rbについて

require 'mail'

class GetMail
  def initialize
    dt = Time.now.strftime("%Y%m%d_%H%M%S%L")
    @out_file = "/home/name/#{dt}.txt"
  end

  def execute
    open(@out_file, "w") do |f|
      mail = Mail.new($stdin.read)
      f.puts "From:    #{mail.from.first}"
      f.puts "To:      #{mail.to.first}"
      f.puts "Date:    #{mail.date}"
      f.puts "Subject: #{mail.subject}"
      f.puts "Body:\n#{mail.body.decoded.encode("UTF-8", mail.charset)}"
    end
  rescue => e
    $stderr.puts "[#{e.class}] #{e.message}"
    e.backtrace.each{|trace| $stderr.puts "\t#{trace}"}
    exit 1
  end
end

exit unless $0 == __FILE__
GetMail.new.execute

ですが、テキストファイルが排出してくれていません。
rubyについてまだ行い始めて1ヶ月なのでよくわかっていません。

ご助力のほどよろしくお願いします。。。

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

checkベストアンサー

0

textProcessing.rbの1行目に、#!「rubyのフルパス」という行が必要です。
あと、ファイルに実行可能属性も必要です。chmod a+x textProcessing.rb

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/07/26 17:13

    なるほど、、ありがとうございます!
    それ以前の話になってしまいますが
    rubyなのですが、先程質問させていただいたruby導入でrubyが動いていたのですが今動かずになってしまってます…
    再インストールした際に usr/bin/ruby のファイルは戻りましたが
    リンク先が存在しないシンボリックリンク
    となってコマンドが出てきません…

    キャンセル

  • 2018/07/26 17:52 編集

    rubyが動きました!
    rubyのfull pathというのは
    puts File::expand_path('/usr/bin/ruby')
    でよろしいでしょうか・・・?

    キャンセル

  • 2018/07/26 21:57

    bashプロンプトで、type ruby です。

    キャンセル

  • 2018/07/27 09:40

    bashプロンプトというと,.batファイルを作り「type ruby」を記述
    そのファイルをrequireでrubyのファイルに読み込むということでしょうか…

    キャンセル

  • 2018/07/27 09:59

    またrubyの書き方としてもこれはあっているのでしょうか…

    キャンセル

  • 2018/07/27 10:55

    日本語が簡潔すぎたですね。
    > bashプロンプトで、type ruby です。

    bashのコマンドを打ち込む端末画面で、type ruby と打つと、rubyのフルパスが表示されます。

    キャンセル

  • 2018/07/27 10:59

    which ruby とは違うのでしょうか…
    またtype rubyと打ち込むと /usr/bin/rubyとでました
    そのため、1行目に
    puts File::expand_path('/usr/bin/ruby')
    と書くのでしょうか…

    キャンセル

  • 2018/07/27 11:04

    スクリプトの1行目に
    #!/usr/bin/ruby
    と書きます。こういうの見たこと無いですか?

    あとtypeとwhichはほぼ同じです。typeはBashの組み込みコマンド、whichは、/usr/bin/which という外部コマンド。

    キャンセル

  • 2018/07/27 11:18

    今調べたらありました、、確認不足でした。。。

    なるほど、違いありがとうございます!

    Ruby script to get a mail via alias of postfix.
    というのもあったのですが、fetchmailの場合もこの文言はいるのでしょうか…?

    キャンセル

  • 2018/07/27 11:30

    > Ruby script to get a mail via alias of postfix.
    コメントでは?

    キャンセル

  • 2018/07/27 11:31

    なるほど。。。ありがとうございます!
    もっとRubyの勉強をします。。。

    キャンセル

  • 2018/07/27 14:34

    申し訳ございません。。
    上記のコメント(#!/usr/bin/ruby)を入れ変更してfetchmailを起動させたのですが動きません…

    これはまだなにか違うのでしょうか…

    キャンセル

  • 2018/07/27 14:45

    未読メールは2つ(今日の09:12と12:12)はありました…

    キャンセル

  • 2018/07/27 16:29

    メッセージは何か出ていますか?
    また、最初からデーモンで起動していないでしょうね。デーモン化は正常に動くことが分かってからです。

    キャンセル

  • 2018/07/27 16:32

    sudo service fetchmail start
    として、
    sudo service fetchmail status
    と確認したところ

    7月 27 15:39:53 hashi-Vostro-3267 systemd[1]: Starting LSB: init-Script for system wide fetchmail daemon...
    7月 27 15:39:53 hashi-Vostro-3267 fetchmail[8888]: * Not starting fetchmail daemon, disabled via /etc/default/fetchmail
    7月 27 15:39:53 hashi-Vostro-3267 systemd[1]: Started LSB: init-Script for system wide fetchmail daemon.

    と出てきました・・・

    キャンセル

  • 2018/07/27 16:36

    いや、だから、デーモン化はするなと。

    キャンセル

  • 2018/07/27 16:38

    ??
    申し訳ございません、理解不足でした…
    cron で動かすということでしょうか…?

    キャンセル

  • 2018/07/27 16:44

    いいえ、手動で動かせと言うことです。
    デーモンにしたり、cronに登録したりするのは、テストして完全に動くことが分かってからです。

    キャンセル

  • 2018/07/27 16:47

    なるほど…
    テスト:コマンドに fetchmail
    本番(テストがうまく行った場合) :sudo service fetchmail start
    ということでしょうか?

    キャンセル

  • 2018/07/27 17:08

    手動でうまく行けば、こういうメッセージが表示されます。

    xxx 通のメッセージ (そのうち xxx 通は 既に読み込んでいます) がアカウント xxxxxx , サーバ xxxxxxx 宛に届いています (xxxxx バイト)

    うまく行かないとおそらくエラーメッセージが表示されると思います。

    キャンセル

  • 2018/07/27 17:18

    fetchmail: hoge@example.jp@example.jp 宛に届いた 19 番目のメッセージ(全部で 19 通)を読み込んでいます (2731 バイト) サーバからメッセージを削除しませんでした。
    と出てきました!

    キャンセル

  • 2018/07/27 17:38

    それでメールを取り込んでプログラムを起動できたと思います。

    キャンセル

  • 2018/07/27 17:40

    なるほど!
    その次にデーモンってことなんですね!本当に1からありがとうございます!!

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 90.50%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る

  • Ruby

    7675questions

    Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

  • Ubuntu

    1407questions

    Ubuntuは、Debian GNU/Linuxを基盤としたフリーのオペレーティングシステムです。

  • シェルスクリプト

    95questions