Bug: feat(email): Local SMTP server



Add mailhog by default in docker-compose for local smtp server.
diff --git a/config/docker_compose.toml b/config/docker_compose.toml
index cfdf4b0e0c2..4296a5931dc 100644
--- a/config/docker_compose.toml
+++ b/config/docker_compose.toml
@@ -55,9 +55,9 @@ master_enc_key = "73ad7bbbbc640c845a150f67d058b279849370cd2c1f3c67c4dd6c869213e1
 password_validity_in_days = 90
 two_factor_auth_expiry_in_secs = 300
 totp_issuer_name = "Hyperswitch"
-base_url = "http://localhost:8080"
+base_url = "http://localhost:9000"
 force_two_factor_auth = false
-force_cookies = true
+force_cookies = false
 
 [locker]
 host = ""
@@ -572,6 +572,7 @@ authentication_analytics_topic = "hyperswitch-authentication-events"
 
 [analytics]
 source = "sqlx"
+forex_enabled = false # Enable or disable forex conversion for analytics
 
 [analytics.clickhouse]
 username = "default"
@@ -695,7 +696,7 @@ connector_list = "cybersource"
 sender_email = "example@example.com"                 # Sender email
 aws_region = ""                                      # AWS region used by AWS SES
 allowed_unverified_days = 1                          # Number of days the api calls ( with jwt token ) can be made without verifying the email
-active_email_client = "NO_EMAIL_CLIENT"              # The currently active email client
+active_email_client = "SMTP"              # The currently active email client
 recon_recipient_email = "recon@example.com"          # Recipient email for recon request email
 prod_intent_recipient_email = "business@example.com" # Recipient email for prod intent email
 
@@ -707,6 +708,13 @@ sts_role_session_name = "" # An identifier for the assumed role session, used to
 [theme.storage]
 file_storage_backend = "file_system" # Theme storage backend to be used
 
+# Configuration for smtp, applicable when the active email client is SMTP
+[email.smtp]
+host = "mailhog" # SMTP host
+port = 1025 # SMTP port
+timeout = 10 # Timeout for SMTP connection in seconds
+connection = "plaintext" #currently plaintext and starttls are supported
+
 [theme.email_config]
 entity_name = "Hyperswitch"                      # Name of the entity to be showed in emails
 entity_logo_url = "https://example.com/logo.svg" # Logo URL of the entity to be used in emails
diff --git a/docker-compose.yml b/docker-compose.yml
index 7450a650119..4bc08b09f63 100644
--- a/docker-compose.yml
+++ b/docker-compose.yml
@@ -51,6 +51,14 @@ services:
     environment:
       # format -> postgresql://DB_USER:DB_PASSWORD@HOST:PORT/DATABASE_NAME
       - DATABASE_URL=postgresql://db_user:db_pass@pg:5432/hyperswitch_db
+  
+  mailhog:
+    image: mailhog/mailhog
+    networks:
+      - router_net
+    ports:
+      - "1025:1025"
+      - "8025:8025"
 
   ### Application services
   hyperswitch-server:

## Type of Change
<!-- Put an `x` in the boxes that apply -->

- [ ] Bugfix
- [ ] New feature
- [X] Enhancement
- [ ] Refactoring
- [ ] Dependency updates
- [ ] Documentation
- [ ] CI/CD

## Description
<!-- Describe your changes in detail -->
Add support to run local email server in docker-compose. User can see the email we send even in local setup

### Additional Changes

- [ ] This PR modifies the API contract
- [ ] This PR modifies the database schema
- [ ] This PR modifies application configuration/environment variables

<!--
Provide links to the files with corresponding changes.

Following are the paths where you can find config files:
1. `config`
2. `crates/router/src/configs`
3. `loadtest/config`
-->


## Motivation and Context
<!--
Why is this change required? What problem does it solve?
If it fixes an open issue, please link to the issue here.

If you don't have an issue, we'd recommend starting with one first so the PR
can focus on the implementation (unless it is an obvious bug or documentation fix
that will have little conversation).
-->


## How did you test it?
<!--
Did you write an integration/unit/API test to verify the code changes?
Or did you test this change manually (provide relevant screenshots)?
-->


## Checklist
<!-- Put an `x` in the boxes that apply -->

- [ ] I formatted the code `cargo +nightly fmt --all`
- [ ] I addressed lints thrown by `cargo clippy`
- [ ] I reviewed the submitted code
- [ ] I added unit tests for my changes where possible
