Initial commit
This commit is contained in:
70
scripts/mail-switch.sh
Executable file
70
scripts/mail-switch.sh
Executable file
@@ -0,0 +1,70 @@
|
||||
#!/usr/bin/env bash
|
||||
# mail-switch.sh — toggle between Mailpit (local testing) and real SMTP server
|
||||
# Usage: ./scripts/mail-switch.sh [mailpit|real]
|
||||
# Without argument: auto-detects current mode and toggles
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||
APP_DIR="$(dirname "$SCRIPT_DIR")"
|
||||
ENV_FILE="$APP_DIR/.env"
|
||||
REAL_ENV="$SCRIPT_DIR/mail-real.env"
|
||||
|
||||
if [[ ! -f "$ENV_FILE" ]]; then
|
||||
echo "ERROR: .env file not found at $ENV_FILE"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [[ ! -f "$REAL_ENV" ]]; then
|
||||
echo "ERROR: mail-real.env not found at $REAL_ENV"
|
||||
echo "Create it with your real SMTP settings."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Read current MAIL_HOST from .env
|
||||
current_host=$(grep -E "^MAIL_HOST=" "$ENV_FILE" | cut -d= -f2 | tr -d '"' | tr -d "'")
|
||||
|
||||
# Determine target mode
|
||||
if [[ "${1:-}" == "mailpit" ]]; then
|
||||
target="mailpit"
|
||||
elif [[ "${1:-}" == "real" ]]; then
|
||||
target="real"
|
||||
elif [[ "$current_host" == "localhost" || "$current_host" == "127.0.0.1" ]]; then
|
||||
target="real"
|
||||
echo "Current mode: Mailpit → switching to real SMTP"
|
||||
else
|
||||
target="mailpit"
|
||||
echo "Current mode: real SMTP ($current_host) → switching to Mailpit"
|
||||
fi
|
||||
|
||||
set_env_value() {
|
||||
local key="$1"
|
||||
local value="$2"
|
||||
# Replace the key=value line in .env (handles empty values too)
|
||||
sed -i "s|^${key}=.*|${key}=${value}|" "$ENV_FILE"
|
||||
}
|
||||
|
||||
if [[ "$target" == "mailpit" ]]; then
|
||||
set_env_value "MAIL_MAILER" "smtp"
|
||||
set_env_value "MAIL_HOST" "localhost"
|
||||
set_env_value "MAIL_PORT" "1025"
|
||||
set_env_value "MAIL_USERNAME" ""
|
||||
set_env_value "MAIL_PASSWORD" ""
|
||||
set_env_value "MAIL_ENCRYPTION" "null"
|
||||
echo "Mail switched to: Mailpit (localhost:1025)"
|
||||
else
|
||||
# Load real SMTP settings from mail-real.env
|
||||
while IFS='=' read -r key value; do
|
||||
# Skip comments and empty lines
|
||||
[[ "$key" =~ ^#.*$ || -z "$key" ]] && continue
|
||||
set_env_value "$key" "$value"
|
||||
done < "$REAL_ENV"
|
||||
real_host=$(grep -E "^MAIL_HOST=" "$REAL_ENV" | cut -d= -f2)
|
||||
echo "Mail switched to: real SMTP ($real_host)"
|
||||
fi
|
||||
|
||||
# Clear config cache and restart queue workers
|
||||
cd "$APP_DIR"
|
||||
php artisan config:clear
|
||||
php artisan queue:restart
|
||||
echo "Done. Config cleared and queue workers restarted."
|
||||
Reference in New Issue
Block a user