diff --git a/lib/net/smtp.rb b/lib/net/smtp.rb index 892faac..8c16d05 100644 --- a/lib/net/smtp.rb +++ b/lib/net/smtp.rb @@ -768,7 +768,8 @@ def any_require_smtputf8(addresses) def send_message(msgstr, from_addr, *to_addrs) to_addrs.flatten! raise IOError, 'closed session' unless @socket - mailfrom from_addr, any_require_smtputf8(to_addrs) + from_addr = Address.new(from_addr, 'SMTPUTF8') if any_require_smtputf8(to_addrs) && capable?('SMTPUTF8') + mailfrom from_addr rcptto_list(to_addrs) {data msgstr} end @@ -823,7 +824,8 @@ def send_message(msgstr, from_addr, *to_addrs) def open_message_stream(from_addr, *to_addrs, &block) # :yield: stream to_addrs.flatten! raise IOError, 'closed session' unless @socket - mailfrom from_addr, any_require_smtputf8(to_addrs) + from_addr = Address.new(from_addr, 'SMTPUTF8') if any_require_smtputf8(to_addrs) && capable?('SMTPUTF8') + mailfrom from_addr rcptto_list(to_addrs) {data(&block)} end @@ -890,8 +892,8 @@ def ehlo(domain) end # +from_addr+ is +String+ or +Net::SMTP::Address+ - def mailfrom(from_addr, require_smtputf8 = false) - addr = if require_smtputf8 || requires_smtputf8(from_addr) + def mailfrom(from_addr) + addr = if requires_smtputf8(from_addr) raise SMTPUTF8RequiredError, "Message requires SMTPUTF8 but server does not support that" unless capable? "SMTPUTF8" Address.new(from_addr, "SMTPUTF8") else @@ -1128,7 +1130,7 @@ def initialize(address, *args, **kw_args) @address = address @parameters = [] end - @parameters = (parameters + args + [kw_args]).map{|param| Array(param)}.flatten(1).map{|param| Array(param).compact.join('=')} + @parameters = (parameters + args + [kw_args]).map{|param| Array(param)}.flatten(1).map{|param| Array(param).compact.join('=')}.uniq end def to_s