You don't have to do anything special for the case where no block was passed:
class Mailer < ::ActionMailer::Base
# ...
def signed_mail(opts = {}, &block)
# ...
mail mail_opts, &block
end
end
If no block was given, block
will already be nil, so this will faithfully pass along the lack of block.