49 lines
982 B
TypeScript
49 lines
982 B
TypeScript
export interface SendEmailInput {
|
|
to: string;
|
|
subject: string;
|
|
text: string;
|
|
}
|
|
|
|
export interface EmailTransport {
|
|
send(input: SendEmailInput): Promise<void>;
|
|
}
|
|
|
|
export function createEmailTransport(config: {
|
|
provider: string;
|
|
from: string;
|
|
apiKey: string;
|
|
}): EmailTransport {
|
|
if (config.provider === "example") {
|
|
return {
|
|
async send(input) {
|
|
console.log(
|
|
JSON.stringify({
|
|
service: "email",
|
|
provider: config.provider,
|
|
from: config.from,
|
|
to: input.to,
|
|
subject: input.subject,
|
|
text: input.text,
|
|
}),
|
|
);
|
|
},
|
|
};
|
|
}
|
|
|
|
return {
|
|
async send(input) {
|
|
console.log(
|
|
JSON.stringify({
|
|
service: "email",
|
|
provider: config.provider,
|
|
mode: "noop_fallback",
|
|
from: config.from,
|
|
to: input.to,
|
|
subject: input.subject,
|
|
text: input.text,
|
|
}),
|
|
);
|
|
},
|
|
};
|
|
}
|