mailer作成 その4
メール保持テーブルの改造
現状のメールを保持するテーブルは、以下の通り:
create table mails ( id int not null auto_increment, unique_id text not null, mail_from text not null, mail_to text not null, mail_date int not null, subject text not null, content longblob not null, primary key (id) );
未読/既読/リプライ済/転送済などをしめすフラグを追加したほうがよさそう。それぞれのフラグをカラムにするより、まとめてビットフィールドにしたほうがあとでフラグを追加しやすいかな?
メール表示の改造
app/controllers/list_controller.rb
class ListController < ApplicationController # 中略 def show content = Mail.find(params[:id])['content'] MailParser.output_charset = "utf-8" StringIO.open(content, "r+b") {|f| message = MailParser.parse_message f @from = (message[:from]) @to = (message[:to]) @date = message[:date] @date_s = @date.strftime("%y/%m/%d %H:%M:%S") @subject = (message[:subject]) @type = message[:type] @subtype = message[:subtype] @parts = message[:parts] @body = message[:body] } end # 後略
app/views/list.rhtmlでは、@typeが"multipart"のとき、partsの各要素がファイル名を持っているかどうかを判定し、ファイル名がなければbodyを表示し、あれば、ファイル名を表示している。
ListController.showで、ファイル名があるpartsの要素は、その内容をそのファイル名でどこかの(publicディレクトリ?)ファイルに出力して、ダウンロードできるようにならないか?