mirror of
https://github.com/discourse/discourse.git
synced 2024-12-15 10:13:40 +08:00
30990006a9
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
59 lines
2.0 KiB
Ruby
Executable File
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
|