SQLの窓

2018年04月24日


Windows10 : Ruby で日本語メール送信

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 にアクセスする

エディタのタブの設定









posted by lightbox at 2018-04-24 20:33 | Ruby 2018 | このブログの読者になる | 更新情報をチェックする
container 終わり



フリーフォントで簡単ロゴ作成
フリーフォントでボタン素材作成
フリーフォントで吹き出し画像作成
フリーフォントではんこ画像作成
ほぼ自由に利用できるフリーフォント
フリーフォントの書体見本とサンプル
画像を大きく見る為のウインドウを開くボタンの作成

CSS ドロップシャドウの参考デモ
イラストAC
ぱくたそ
写真素材 足成
フリーフォント一覧
utf8 文字ツール
右サイド 終わり
base 終わり