Skip to content

Mail Templates

WireGuard Portal sends emails when you share a configuration with a user. By default, the application uses embedded templates. You can fully customize these emails by pointing the Portal to a folder containing your own templates. If the folder is empty on startup, the default embedded templates are written there to get you started.

Configuration

To enable custom templates, set the mail.templates_path option in the application configuration file or the WG_PORTAL_MAIL_TEMPLATES_PATH environment variable to a valid folder path.

For example:

mail:
  # ... other mail options ...
  # Path where custom email templates (.gotpl and .gohtml) are stored.
  # If the directory is empty on startup, the default embedded templates
  # will be written there so you can modify them.
  # Leave empty to use embedded templates only.
  templates_path: "/opt/wg-portal/mail-templates"

Template files and names

The system expects the following template names. Place files with these names in your templates_path to override the defaults. You do not need to override all templates, only the ones you want to customize should be present.

  • Text templates (.gotpl):
  • mail_with_link.gotpl
  • mail_with_attachment.gotpl
  • HTML templates (.gohtml):
  • mail_with_link.gohtml
  • mail_with_attachment.gohtml

Both text and HTML templates are standard Go templates and receive the following data fields, depending on the email type:

  • Common fields:
  • PortalUrl (string) - external URL of the Portal
  • PortalName (string) - site title/company name
  • User (*domain.User) - the recipient user (may be partially populated when sending to a peer email)
  • Link email (mail_with_link.*):
  • Link (string) - the download link
  • Attachment email (mail_with_attachment.*):
  • ConfigFileName (string) - filename of the attached WireGuard config
  • QrcodePngName (string) - CID content-id of the embedded QR code image

Tip: You can inspect the embedded templates in the repository under internal/app/mail/tpl_files/ for reference. When the directory at templates_path is empty, these files are copied to your folder so you can edit them in place.