diff --git a/app/controllers/api/v1/users_controller.rb b/app/controllers/api/v1/users_controller.rb
index a113f2fca94d8a639379911a44f8ed2b0eca4342..f3dc625210d14b7af47d40d36f9958a3c11d71fb 100644
--- a/app/controllers/api/v1/users_controller.rb
+++ b/app/controllers/api/v1/users_controller.rb
@@ -23,6 +23,7 @@ module Api
       # POST /api/v1/users.json
       # Creates and saves a new user record in the database with the provided parameters
       def create
+        smtp_enabled = ENV['SMTP_SERVER'].present?
         # Check if this is an admin creating a user
         admin_create = current_user && PermissionsChecker.new(current_user:, permission_names: 'ManageUsers', current_provider:).call
 
@@ -37,6 +38,8 @@ module Api
 
         user = UserCreator.new(user_params: create_user_params.except(:invite_token), provider: current_provider, role: default_role).call
 
+        user.verify! unless smtp_enabled
+
         # TODO: Add proper error logging for non-verified token hcaptcha
         if !admin_create && hcaptcha_enabled? && !verify_hcaptcha(response: params[:token])
           return render_error errors: Rails.configuration.custom_error_msgs[:hcaptcha_invalid]
@@ -46,10 +49,12 @@ module Api
         user.pending! if !admin_create && registration_method == SiteSetting::REGISTRATION_METHODS[:approval]
 
         if user.save
-          token = user.generate_activation_token!
-          UserMailer.with(user:, expires_in: User::ACTIVATION_TOKEN_VALIDITY_PERIOD.from_now,
-                          activation_url: activate_account_url(token), base_url: request.base_url,
-                          provider: current_provider).activate_account_email.deliver_later
+          if smtp_enabled
+            token = user.generate_activation_token!
+            UserMailer.with(user:, expires_in: User::ACTIVATION_TOKEN_VALIDITY_PERIOD.from_now,
+                            activation_url: activate_account_url(token), base_url: request.base_url,
+                            provider: current_provider).activate_account_email.deliver_later
+          end
 
           create_default_room(user)
 
diff --git a/sample.env b/sample.env
index 638c919e90c724c325496a971fba3ccdcf47a4b5..e3a22c6a39cb5cedc79d40e82b46771fc3892e6e 100644
--- a/sample.env
+++ b/sample.env
@@ -20,23 +20,23 @@ DATABASE_URL=
 #   E.g. redis://redis:6379
 REDIS_URL=
 
+### OPTIONAL ENV VARS
+
 ### SMTP CONFIGURATION
 # Emails are required for the basic features of Greenlight to function.
 # Please refer to your SMTP provider to get the values for the variables below
-SMTP_SENDER_EMAIL=
-SMTP_SENDER_NAME=
-SMTP_SERVER=
-SMTP_PORT=
-SMTP_DOMAIN=
-SMTP_USERNAME=
-SMTP_PASSWORD=
-SMTP_AUTH=
-SMTP_STARTTLS_AUTO=
-SMTP_STARTTLS=
-SMTP_TLS=
-SMTP_SSL_VERIFY=
-
-### OPTIONAL ENV VARS
+#SMTP_SENDER_EMAIL=
+#SMTP_SENDER_NAME=
+#SMTP_SERVER=
+#SMTP_PORT=
+#SMTP_DOMAIN=
+#SMTP_USERNAME=
+#SMTP_PASSWORD=
+#SMTP_AUTH=
+#SMTP_STARTTLS_AUTO=true
+#SMTP_STARTTLS=false
+#SMTP_TLS=false
+#SMTP_SSL_VERIFY=true
 
 ### EXTERNAL AUTHENTICATION METHODS
 #
diff --git a/spec/controllers/users_controller_spec.rb b/spec/controllers/users_controller_spec.rb
index 1d80107a2025bc0c098f9719d9706efe6df25242..56dcb2dbd16ed9ee2f82f75c932cd9fb3c032bda 100644
--- a/spec/controllers/users_controller_spec.rb
+++ b/spec/controllers/users_controller_spec.rb
@@ -8,6 +8,7 @@ RSpec.describe Api::V1::UsersController, type: :controller do
   let(:fake_setting_getter) { instance_double(SettingGetter) }
 
   before do
+    ENV['SMTP_SERVER'] = 'test.com'
     request.headers['ACCEPT'] = 'application/json'
   end
 
@@ -63,23 +64,39 @@ RSpec.describe Api::V1::UsersController, type: :controller do
       end
 
       context 'activation' do
-        it 'generates an activation token for the user' do
-          freeze_time
+        context 'SMTP enabled' do
+          it 'generates an activation token for the user' do
+            freeze_time
 
-          post :create, params: user_params
-          user = User.find_by email: user_params[:user][:email]
-          expect(user.verification_digest).to be_present
-          expect(user.verification_sent_at).to eq(Time.current)
-          expect(user).not_to be_verified
+            post :create, params: user_params
+            user = User.find_by email: user_params[:user][:email]
+            expect(user.verification_digest).to be_present
+            expect(user.verification_sent_at).to eq(Time.current)
+            expect(user).not_to be_verified
+          end
+
+          it 'sends activation email to and does not sign in the created user' do
+            session[:session_token] = nil
+            expect { post :create, params: user_params }.to change(User, :count).by(1)
+            expect(ActionMailer::MailDeliveryJob).to have_been_enqueued.at(:no_wait).exactly(:once).with('UserMailer', 'activate_account_email',
+                                                                                                         'deliver_now', Hash)
+            expect(response).to have_http_status(:created)
+            expect(session[:session_token]).to be_nil
+          end
         end
 
-        it 'sends activation email to and does not sign in the created user' do
-          session[:session_token] = nil
-          expect { post :create, params: user_params }.to change(User, :count).by(1)
-          expect(ActionMailer::MailDeliveryJob).to have_been_enqueued.at(:no_wait).exactly(:once).with('UserMailer', 'activate_account_email',
-                                                                                                       'deliver_now', Hash)
-          expect(response).to have_http_status(:created)
-          expect(session[:session_token]).to be_nil
+        context 'SMTP disabled' do
+          before do
+            ENV['SMTP_SERVER'] = ''
+          end
+
+          it 'marks the user as verified and signs them in' do
+            post :create, params: user_params
+
+            user = User.find_by email: user_params[:user][:email]
+            expect(user).to be_verified
+            expect(session[:session_token]).to eq(user.session_token)
+          end
         end
       end