Commit 12905ce1 authored by Ivan Tashkinov's avatar Ivan Tashkinov
Browse files

[#114] Added /dev/mailbox dev-only route (emails preview). Added mailer config examples.

parent 10c156d9
......@@ -30,6 +30,31 @@ This filter replaces the filename (not the path) of an upload. For complete obfu
* `text`: Text to replace filenames in links. If empty, `{random}.extension` will be used.
## Pleroma.Mailer
* `adapter`: one of the mail adapters listed in [Swoosh readme](, or `Swoosh.Adapters.Local` for in-memory mailbox.
* `api_key` / `password` and / or other adapter-specific settings, per the above documentation.
An example for Sendgrid adapter:
config :pleroma, Pleroma.Mailer,
adapter: Swoosh.Adapters.Sendgrid,
api_key: "YOUR_API_KEY"
An example for SMTP adapter:
config :pleroma, Pleroma.Mailer,
adapter: Swoosh.Adapters.SMTP,
relay: "",
username: "",
port: 465,
ssl: true,
tls: :always,
auth: :always
## :uri_schemes
* `valid_schemes`: List of the scheme part that is considered valid to be an URL
......@@ -17,47 +17,6 @@
http: [port: 4000],
protocol: "http"
# Supported adapters:
mailer_settings =
case String.downcase(System.get_env("PLEROMA_SWOOSH_ADAPTER") || "") do
"mailgun" ->
adapter: Swoosh.Adapters.Mailgun,
api_key: System.get_env("PLEROMA_MAILGUN_API_KEY"),
domain: System.get_env("PLEROMA_MAILGUN_DOMAIN")
"mandrill" ->
adapter: Swoosh.Adapters.Mandrill,
api_key: System.get_env("PLEROMA_MANDRILL_API_KEY")
"sendgrid" ->
adapter: Swoosh.Adapters.Sendgrid,
api_key: System.get_env("PLEROMA_SENDGRID_API_KEY")
"smtp" ->
adapter: Swoosh.Adapters.SMTP,
relay: System.get_env("PLEROMA_SMTP_RELAY"),
username: System.get_env("PLEROMA_SMTP_USERNAME"),
password: System.get_env("PLEROMA_SMTP_PASSWORD"),
port: System.get_env("PLEROMA_SMTP_PORT") || 1025,
ssl: true,
tls: :always,
auth: :always,
retries: 3
_ ->
[adapter: Swoosh.Adapters.Local]
config :pleroma, Pleroma.Mailer, mailer_settings
# Do not print debug messages in production
config :logger, level: :info
......@@ -85,6 +85,15 @@ defmodule Pleroma.Web.Router do
plug(:accepts, ["html", "json"])
pipeline :mailbox_preview do
plug(:accepts, ["html"])
plug(:put_secure_browser_headers, %{
"content-security-policy" =>
"default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval'; style-src 'self' 'unsafe-inline' 'unsafe-eval'"
scope "/api/pleroma", Pleroma.Web.TwitterAPI do
get("/password_reset/:token", UtilController, :show_password_reset)
......@@ -268,6 +277,7 @@ defmodule Pleroma.Web.Router do
get("/statusnet/conversation/:id", TwitterAPI.Controller, :fetch_conversation)
post("/account/register", TwitterAPI.Controller, :register)
post("/account/reset_password", TwitterAPI.Controller, :reset_password)
get("/search", TwitterAPI.Controller, :search)
get("/statusnet/tags/timeline/:tag", TwitterAPI.Controller, :public_and_external_timeline)
......@@ -424,6 +434,14 @@ defmodule Pleroma.Web.Router do
get("/:sig/:url/:filename", MediaProxyController, :remote)
if Mix.env() == :dev do
scope "/dev" do
forward("/mailbox", Plug.Swoosh.MailboxPreview, base_path: "/dev/mailbox")
scope "/", Fallback do
get("/registration/:token", RedirectController, :registration_page)
get("/*path", RedirectController, :redirector)
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment