Detailed SMTP setup (#6759)

* add detailed SMTP settings setup in mastodon:setup

* add localhost SMTP settings setup in mastodon:setup

* SMTP settings setup should exit after successful delivery of test mail
This commit is contained in:
Ushitora Anqou 2018-03-13 05:41:26 +09:00 committed by Eugen Rochko
parent f5f165a5eb
commit 051b649628

View file

@ -224,24 +224,43 @@ namespace :mastodon do
prompt.say "\n" prompt.say "\n"
loop do loop do
env['SMTP_SERVER'] = prompt.ask('SMTP server:') do |q| if prompt.yes?('Do you want to send e-mails from localhost?', default: false)
q.required true env['SMTP_SERVER'] = 'localhost'
q.default 'smtp.mailgun.org' env['SMTP_PORT'] = 25
q.modify :strip env['SMTP_AUTH_METHOD'] = 'none'
end env['SMTP_OPENSSL_VERIFY_MODE'] = 'none'
else
env['SMTP_SERVER'] = prompt.ask('SMTP server:') do |q|
q.required true
q.default 'smtp.mailgun.org'
q.modify :strip
end
env['SMTP_PORT'] = prompt.ask('SMTP port:') do |q| env['SMTP_PORT'] = prompt.ask('SMTP port:') do |q|
q.required true q.required true
q.default 587 q.default 587
q.convert :int q.convert :int
end end
env['SMTP_LOGIN'] = prompt.ask('SMTP username:') do |q| env['SMTP_LOGIN'] = prompt.ask('SMTP username:') do |q|
q.modify :strip q.modify :strip
end end
env['SMTP_PASSWORD'] = prompt.ask('SMTP password:') do |q| env['SMTP_PASSWORD'] = prompt.ask('SMTP password:') do |q|
q.echo false q.echo false
end
env['SMTP_AUTH_METHOD'] = prompt.ask('SMTP authentication:') do |q|
q.required
q.default 'plain'
q.modify :strip
end
env['SMTP_OPENSSL_VERIFY_MODE'] = prompt.ask('SMTP OpenSSL verify mode:') do |q|
q.required
q.default 'peer'
q.modify :strip
end
end end
env['SMTP_FROM_ADDRESS'] = prompt.ask('E-mail address to send e-mails "from":') do |q| env['SMTP_FROM_ADDRESS'] = prompt.ask('E-mail address to send e-mails "from":') do |q|
@ -261,7 +280,8 @@ namespace :mastodon do
:user_name => env['SMTP_LOGIN'].presence, :user_name => env['SMTP_LOGIN'].presence,
:password => env['SMTP_PASSWORD'].presence, :password => env['SMTP_PASSWORD'].presence,
:domain => env['LOCAL_DOMAIN'], :domain => env['LOCAL_DOMAIN'],
:authentication => :plain, :authentication => env['SMTP_AUTH_METHOD'] == 'none' ? nil : env['SMTP_AUTH_METHOD'] || :plain,
:openssl_verify_mode => env['SMTP_OPENSSL_VERIFY_MODE'],
:enable_starttls_auto => true, :enable_starttls_auto => true,
} }
@ -271,6 +291,7 @@ namespace :mastodon do
mail = ActionMailer::Base.new.mail to: send_to, subject: 'Test', body: 'Mastodon SMTP configuration works!' mail = ActionMailer::Base.new.mail to: send_to, subject: 'Test', body: 'Mastodon SMTP configuration works!'
mail.deliver mail.deliver
break
rescue StandardError => e rescue StandardError => e
prompt.error 'E-mail could not be sent with this configuration, try again.' prompt.error 'E-mail could not be sent with this configuration, try again.'
prompt.error e.message prompt.error e.message