Плагины Medusa
M
Mailgun notification medusa
The Mailgun notification provider plugin for Medusa v2
Table of Contents
Prerequisites
- Node.js v20 or higher
- Medusa server v2.3.0 or higher
- A Mailgun account and API key and domain
[!NOTE] If you use Mailgun's EU-hosted infrastructure, you need this url as the api_url: https://api.eu.mailgun.net
Installation
pnpm add @webbers/mailgun-notification-medusa
Configuration
Add the provider to the module in your file:
module.exports = defineConfig({projectConfig: {// ...},modules: [// ... other modules{resolve: "@medusajs/medusa/notification",options: {providers: [{resolve:"@webbers/mailgun-notification-medusa/providers/notification-mailgun",id: "notification-mailgun",options: {channels: ["email"],apiKey: process.env.MAILGUN_API_KEY,domain: process.env.MAILGUN_DOMAIN,from_email: process.env.MAILGUN_FROM,api_url: process.env.MAILGUN_API_URL, // Only required if using Mailgun's EU-hosted infrastructuretemplates: {"<template-name>": {subject: "<subject-function>",template: "<template-function>",},},default_locale: "nl",},},],},},]})
Configuration Options
| Option | Description | Default |
|---|---|---|
| Your Mailgun API key | Required | |
| Your Mailgun domain | Required | |
| Your from email address | Required | |
| Your email template functions | Required | |
| The default locale for the emails | Required | |
| The API url of mailgun | Optional |
Environment Variables
Create or update your file with the following variables:
MAILGUN_API_KEY="<your-mailgun-api-key>"MAILGUN_DOMAIN="<your-mailgun-domain>"MAILGUN_FROM="<your-mailgun-from-email>"MAILGUN_API_URL="<your-api-url>"
Usage
To set up up your email templates two functions are required per template:
- A function that takes a locale as a parameter and returns the subject of the email
- A function that takes the props of the email as a parameter and returns the template of the email For example you could set it up like this:
- In the src directory of your medusa server create a directory called
- Inside the emails directory create a file called
- Inside the order-placed.tsx file add the following code:
import * as React from "react"import {Html,Head,Preview,Body,Container,Heading,Text,} from "@react-email/components"export const getOrderPlacedTemplate = () => (<Html><Head/><Preview>Your order is confirmed</Preview><Body><Container><Heading>Thanks for your order!</Heading><Text>Order #12345 has been confirmed.</Text><Text>Total: $59.99</Text></Container></Body></Html>)export const orderPlacedSubject = (locale: string) => {switch (locale) {case "nl":return "Bestelling bevestigd"case "en":return "Order Confirmation"}}
- In the file add the following code:
module.exports = defineConfig({projectConfig: {// ...},modules: [// ... other modules{resolve: "@medusajs/medusa/notification",options: {providers: [{resolve:"@webbers/mailgun-notification-medusa/providers/notification-mailgun",id: "notification-mailgun",options: {channels: ["email"],apiKey: process.env.MAILGUN_API_KEY,domain: process.env.MAILGUN_DOMAIN,from_email: process.env.MAILGUN_FROM,api_url: process.env.MAILGUN_API_URL, // Only required if using Mailgun's EU-hosted infrastructuretemplates: {"order-placed": {subject: orderPlacedSubject,template: getOrderPlacedTemplate,},},default_locale: "nl",},},],},},]})
Local development and customization
In case you want to customize and test the plugin locally, refer to the Medusa Plugin docs.