Ruby で正しい情報を収集するのは、他の言語に比べて骨が折れるようです。 今回かなり ISO-2022-JP の MIME 文字列で困りました。まず、NKF.nkf("-WjM", subject) で欲しい文字列は手に入るのですが、渡して実行すると UTF-8 に変換されていました。 また、本文の JIS 作成が良く解らずに調べている途中で、mail-iso-2022-jp の存在を知って余計な時間を使う事をなんとか逃れました。 ソース最後のコメントは、mail ライブラリの smtp.rb の中にあったものですが、シンボルと文字列の違いが最初解らずに納得が行かない時間がちょっとありました。 gem で mail ライブラリ をインストールruby 2.4.4p296 (2018-03-28 revision 63013) [x64-mingw32] C:\Users\sworc>gem install mail Fetching: mini_mime-1.0.0.gem (100%) Successfully installed mini_mime-1.0.0 Fetching: mail-2.7.0.gem (100%) Successfully installed mail-2.7.0 Parsing documentation for mini_mime-1.0.0 Installing ri documentation for mini_mime-1.0.0 Parsing documentation for mail-2.7.0 Installing ri documentation for mail-2.7.0 Done installing documentation for mini_mime, mail after 28 seconds 2 gems installed C:\Users\sworc>gem install mail-iso-2022-jp Successfully installed mail-iso-2022-jp-2.0.8 Parsing documentation for mail-iso-2022-jp-2.0.8 Done installing documentation for mail-iso-2022-jp after 0 seconds 1 gem installed
require 'nkf' require 'pp' require 'mail' require 'mail-iso-2022-jp' # ****************** # メール用変数 # ****************** user = "ユーザ名" pass = "パスワード" to = "宛先メールアドレス" # ****************** # メール内容 # ****************** subject = "日本語の件名" body = "日本語の\n本文\nです" mail = Mail.new(charset: "ISO-2022-JP") mail["from"] = "わたし <#{user}@#{user}.sakura.ne.jp>" mail["to"] = "あなた <#{to}>" mail["subject"] = subject mail["body"] = body smtp_server = { :address => "#{user}.sakura.ne.jp", :port => 587, :domain => "sakura.ne.jp", :user_name => "#{user}@#{user}.sakura.ne.jp" , :password => pass, :authentication => "plain", :enable_starttls_auto => true } # ****************** #Pretty Print # ****************** pp smtp_server # ****************** # 個別 # ****************** p smtp_server[:address] p smtp_server[:port] p smtp_server[:domain] p smtp_server[:user_name] p smtp_server[:password] p smtp_server[:authentication] p smtp_server[:enable_starttls_auto] mail.delivery_method(:smtp, smtp_server ) # ****************** #メール送信 # ****************** begin mail.deliver rescue => e p e.message end # ****************** # Subject の文字列変換のテスト # ****************** p NKF.nkf("-WjM", subject) # ****************** #シンボルと文字列の比較 # ****************** if :login.to_s == "login" then p "一致" end if "login".to_sym == :login then p "一致" end # === Sending via GMail # # Mail.defaults do # delivery_method :smtp, { :address => "smtp.gmail.com", # :port => 587, # :domain => 'your.host.name', # :user_name => '<username>', # :password => '<password>', # :authentication => 'plain', # :enable_starttls_auto => true } # end #DEFAULTS = { # :address => 'localhost', # :port => 25, # :domain => 'localhost.localdomain', # :user_name => nil, # :password => nil, # :authentication => nil, # :enable_starttls => nil, # :enable_starttls_auto => true, # :openssl_verify_mode => nil, # :ssl => nil, # :tls => nil, # :open_timeout => nil, # :read_timeout => nil #}
関連する記事 Pleiades Eclipse 4.7 Oxygen で Ruby を使って MySQL にアクセスする エディタのタブの設定
|
【Ruby 2018の最新記事】
- Ruby(mechanize) で Seesaa のエクスポート
- さくらインターネットに Ruby をインストールして mechanize ( 先に nokogiri のインストールが必要でした )
- Ruby + MySQL + IFRAME + Bootstrap : 問い合せ WEB アプリテンプレート
- Ruby 2.4 で GET/POST メソッドを想定した CGI 用のテンプレート改良版( FORM で MySQL 参照と更新 )
- Ruby のエンコーディング( スクリプト・デフォルト・STDIN・STDOUT )
- Ruby 2.4 で GET/POST メソッドを想定した CGI 用の簡易テンプレートを作成してみました
- Eclipse + Ruby : win32ole(COM使用の為) + MySQL Connector/ODBC でループ処理をしながら更新
- Pleiades Eclipse 4.7 Oxygen で Ruby を使って MySQL にアクセスする