discourse/script/test_email_settings.rb
Sam Saffron 30990006a9 DEV: enable frozen string literal on all files
This reduces chances of errors where consumers of strings mutate inputs
and reduces memory usage of the app.

Test suite passes now, but there may be some stuff left, so we will run
a few sites on a branch prior to merging
2019-05-13 09:31:32 +08:00

59 lines
2.0 KiB
Ruby
Executable File

#!/usr/bin/env ruby
# frozen_string_literal: true
require 'action_mailer'
# Make this your email address. Poor example.com gets SO MUCH MAIL
YOUR_EMAIL = "nobody@example.com"
# Change these to be the same settings as your Discourse environment
DISCOURSE_SMTP_ADDRESS = "smtp.example.com" # (mandatory)
@DISCOURSE_SMTP_PORT = 587 # (optional)
@DISCOURSE_SMTP_USER_NAME = "username" # (optional)
@DISCOURSE_SMTP_PASSWORD = "blah" # (optional)
#@DISCOURSE_SMTP_OPENSSL_VERIFY_MODE = "none" # (optional) none|peer|client_once|fail_if_no_peer_cert
# Note that DISCOURSE_SMTP_ADDRESS should NOT BE ALLOWED to relay mail to
# YOUR_EMAIL without authentication
MAILFROM = @DISCOURSE_SMTP_USER_NAME || YOUR_EMAIL
MAILTO = YOUR_EMAIL
### You shouldn't need to change anything below here
$delivery_options = {
user_name: @DISCOURSE_SMTP_USER_NAME || nil,
password: @DISCOURSE_SMTP_PASSWORD || nil,
address: DISCOURSE_SMTP_ADDRESS,
port: @DISCOURSE_SMTP_PORT || nil,
openssl_verify_mode: @DISCOURSE_SMTP_OPENSSL_VERIFY_MODE || nil
}
class EmailTestMailer < ActionMailer::Base
def email_test(mailfrom, mailto)
mail(from: mailfrom,
to: mailto,
body: "Testing email settings",
subject: "Discourse email settings test",
delivery_method_options: $delivery_options)
end
end
message = EmailTestMailer.email_test(MAILFROM, MAILTO)
begin
message.deliver_now()
rescue SocketError => e
print "Delivery failed: " + e.message.strip() + "\n"
print " Is the server hostname correct?\n"
rescue OpenSSL::SSL::SSLError => e
print "Delivery failed: " + e.message.strip() + "\n"
print " You probably need to change the ssl verify mode.\n"
rescue Net::SMTPAuthenticationError => e
print "Delivery failed: " + e.message.strip() + "\n"
print " Check to ensure your username and password are correct.\n"
rescue Net::SMTPFatalError => e
print "Delivery failed: " + e.message.strip() + "\n"
print " Check the above error and fix your settings.\n"
else
print "Successfully delivered.\n"
end