Packages

phoenix_kit

1.7.19
1.7.207 1.7.206 1.7.205 1.7.204 1.7.203 1.7.202 1.7.201 1.7.200 1.7.199 1.7.198 1.7.197 1.7.196 1.7.194 1.7.193 1.7.192 1.7.191 1.7.190 1.7.189 1.7.187 1.7.186 1.7.185 1.7.184 1.7.183 1.7.182 1.7.181 1.7.180 1.7.179 1.7.178 1.7.177 1.7.176 1.7.175 1.7.174 1.7.173 1.7.172 1.7.171 1.7.170 1.7.169 1.7.168 1.7.167 1.7.166 1.7.165 1.7.164 1.7.162 1.7.161 1.7.160 1.7.159 1.7.157 1.7.156 1.7.155 1.7.154 1.7.153 1.7.152 1.7.151 1.7.150 1.7.149 1.7.146 1.7.145 1.7.144 1.7.143 1.7.138 1.7.133 1.7.132 1.7.131 1.7.130 1.7.128 1.7.126 1.7.125 1.7.121 1.7.120 1.7.119 1.7.118 1.7.117 1.7.116 1.7.115 1.7.114 1.7.113 1.7.112 1.7.111 1.7.110 1.7.109 1.7.108 1.7.107 1.7.106 1.7.105 1.7.104 1.7.103 1.7.102 1.7.101 1.7.100 1.7.99 1.7.98 1.7.97 1.7.96 1.7.95 1.7.94 1.7.93 1.7.92 1.7.91 1.7.90 1.7.89 1.7.88 1.7.87 1.7.86 1.7.85 1.7.84 1.7.83 1.7.82 1.7.81 1.7.80 1.7.79 1.7.78 1.7.77 1.7.76 1.7.75 1.7.74 1.7.71 1.7.70 1.7.69 1.7.66 1.7.65 1.7.64 1.7.63 1.7.62 1.7.61 1.7.59 1.7.58 1.7.57 1.7.56 1.7.55 1.7.54 1.7.53 1.7.52 1.7.51 1.7.49 1.7.44 1.7.43 1.7.42 1.7.41 1.7.39 1.7.38 1.7.37 1.7.36 1.7.34 1.7.33 1.7.31 1.7.30 1.7.29 1.7.28 1.7.27 1.7.26 1.7.25 1.7.24 1.7.23 1.7.22 1.7.21 1.7.20 1.7.19 1.7.18 1.7.17 1.7.16 1.7.15 1.7.14 1.7.13 1.7.12 1.7.11 1.7.10 1.7.9 1.7.8 1.7.7 1.7.6 1.7.5 1.7.4 1.7.3 1.7.2 1.7.1 1.7.0 1.6.20 1.6.19 1.6.18 1.6.17 1.6.16 1.6.15 1.6.14 1.6.13 1.6.12 1.6.11 1.6.10 1.6.9 1.6.8 1.6.7 1.6.6 1.6.5 1.6.4 1.6.3 1.5.2 1.5.1 1.5.0 1.4.9 1.4.8 1.4.7 1.4.6 1.4.5 1.4.4 1.4.3 1.4.2 1.4.1 1.4.0 1.3.2 1.3.1 1.3.0 1.2.10 1.2.9 1.2.8 1.2.7 1.2.5 1.2.4 1.2.2 1.2.1 1.2.0 1.1.0 1.0.0

A foundation for building Elixir Phoenix apps — SaaS, social networks, ERP systems, marketplaces, and more

Current section

Files

Jump to
phoenix_kit lib modules emails utils.ex
Raw

lib/modules/emails/utils.ex

defmodule PhoenixKit.Modules.Emails.Utils do
@moduledoc """
Utility functions for email handling in PhoenixKit.
This module contains helper functions for email provider detection,
configuration analysis, and other email-related utilities.
"""
alias PhoenixKit.Config
@doc """
Converts Swoosh adapter module to provider name.
Maps common Swoosh mailer adapters to standardized provider names
used throughout PhoenixKit's email tracking system.
## Parameters
- `adapter` - The Swoosh adapter module (e.g., Swoosh.Adapters.AmazonSES)
- `default_name` - Default provider name to return if adapter is unknown
## Examples
iex> PhoenixKit.Modules.Emails.Utils.adapter_to_provider_name(Swoosh.Adapters.AmazonSES, "unknown")
"aws_ses"
iex> PhoenixKit.Modules.Emails.Utils.adapter_to_provider_name(Swoosh.Adapters.SMTP, "unknown")
"smtp"
iex> PhoenixKit.Modules.Emails.Utils.adapter_to_provider_name(Some.Custom.Adapter, "custom")
"custom"
"""
@spec adapter_to_provider_name(module() | nil, String.t()) :: String.t()
def adapter_to_provider_name(adapter, default_name \\ "unknown") do
case adapter do
Swoosh.Adapters.AmazonSES -> "aws_ses"
Swoosh.Adapters.SMTP -> "smtp"
Swoosh.Adapters.Sendgrid -> "sendgrid"
Swoosh.Adapters.Mailgun -> "mailgun"
Swoosh.Adapters.Local -> "local"
_ -> default_name
end
end
@doc """
Detects email provider from application configuration.
Analyzes the configured mailer adapter to determine which email
provider is being used (AWS SES, SMTP, SendGrid, etc.).
## Examples
iex> PhoenixKit.Modules.Emails.Utils.detect_provider_from_config()
"aws_ses"
iex> PhoenixKit.Modules.Emails.Utils.detect_provider_from_config()
"smtp"
"""
@spec detect_provider_from_config() :: String.t()
def detect_provider_from_config do
case PhoenixKit.Config.get(:mailer) do
{:ok, mailer} when not is_nil(mailer) ->
# Try to determine provider from mailer configuration
config = Config.get(mailer, [])
adapter = Keyword.get(config, :adapter)
adapter_to_provider_name(adapter, "unknown")
_ ->
"unknown"
end
end
end