import mailgun from "../../mailgun.app.mjs";
import common from "../common.mjs";
export default {
...common,
key: "mailgun-suppress-email",
name: "Suppress Email",
description: "Add email to the Mailgun suppression list. [See the docs here](https://documentation.mailgun.com/en/latest/api-suppressions.html#suppressions)",
version: "0.0.3",
type: "action",
props: {
mailgun,
domain: {
propDefinition: [
mailgun,
"domain",
],
},
email: {
propDefinition: [
mailgun,
"emailString",
],
},
category: {
type: "string",
label: "Category",
description: "Which suppression list to add the email to",
options: [
"bounces",
"unsubscribes",
"complaints",
],
},
bounceErrorCode: {
type: "string",
label: "Bounce Error Code",
description: "Email bounce error code",
default: "550",
optional: true,
},
bounceErrorMessage: {
type: "string",
label: "Bounce Error Message",
description: "Email bounce error message",
optional: true,
},
unsubscribeFrom: {
type: "string",
label: "Tag to unsubscribe from",
description: "Use * to unsubscribe an address from all domain’s correspondence",
default: "*",
optional: true,
},
...common.props,
},
async run({ $ }) {
const urlSearchParams = new URLSearchParams();
urlSearchParams.append("address", this.email);
switch (this.category) {
case "bounces":
urlSearchParams.append("code", this.bounceErrorCode);
urlSearchParams.append("error", this.bounceErrorMessage);
break;
case "unsubscribes":
urlSearchParams.append("tag", this.unsubscribeFrom);
break;
}
const params = urlSearchParams.toString();
const url = `v3/${this.domain}/${this.category}?${params}`;
const resp = await this.withErrorHandler(this.mailgun.mailgunPostRequest, url);
$.export("$summary", "Successfully suppressed email");
return resp;
},
};