いつもお世話になっております。
##現状
プログラムの実行結果をメールで届くように設定していのですが、メール内容の一部が(UTF-16BE)の文字コードで帰ってきます。
文字化けしている部分は、配列のデータになります。
その他、配列に格納されていない文字列は文字化けせず表示されております。
##該当のプログラム
require 'logger' def logger(type="info", text) if type == "info" $log.info (text) $logs << text end $log.warn (text) if type == "warn" if type == "error" $log.error (text) $errors << text end end def send_log_mail(type ="log") Mail.defaults do delivery_method :smtp, { :address => "smtp.gmail.com", :port => 587, :domain => 'gmail.com', :user_name => 'test@gmail.com', :password => 'samlple', :authentication => 'plain', :enable_starttls_auto => true } end if type == "log" && $logs.empty? == false m = Mail.new do from "test@gmail.com" to "info@corporation.com" subject "【通知】在庫連携ログ" body $logs end m.charset = "UTF-8" m.content_transfer_encoding = "8bit" m.deliver elsif type == "error" && $errors.empty? == false m = Mail.new do from "test@gmail.com" to "info@corporation.com" subject "【通知】在庫連携のエラー" body $errors end m.charset = "UTF-8" m.content_transfer_encoding = "8bit" m.deliver end
プログラムの流れとしてエラーやログを変数に保存しプログラムが終了時に、それらの変数が格納されておれば変数の内容をメールの送信するといった流れになります。
下記のtextに配列が代入されることもあり、その配列が文字化けしてしまいます。
def logger(type="info", text)
どなたかアドバイス頂けないでしょうか?
def send_log_mail(type ="log")の中で文字化けしているのではなく、$logsそのものが文字化けしている可能性はありませんか?textを追跡してsyslogに吐き出すなどしながら、原因を探る他ありません
回答1件
あなたの回答
tips
プレビュー