Search... Ctrl + K

Send Email (gmail)
One script reply has been approved by the moderators Verified

Created by rossmccrann 119 days ago Used 961 times 3 Points

Send an email using Gmail without any attachments.

No comments yet

Points: 0
One script reply has been approved by the moderators
import * as wmill from "";
import {
  encode as base64UrlEncode,
} from "";

 * @param user_id User's email address. The special value `me` can be used to indicate the authenticated user.
export async function main(
  gmail_auth: wmill.Resource<"gmail">,
  to_email: string,
  subject: string,
  message: string,
  user_id: string = "me"
) {
  const token = gmail_auth['token']
  if(!token) {
    throw Error(`
    No authentication token was found.
    Go to "" to connect Gmail, 
    then select your token from the dropdown in the arguments window.
    (Click "Refresh" if you don't see your resource in the list.)\n`)

  const text = `From: <${user_id}>\nTo: <${to_email}>\nSubject: ${subject}\n\r ${message}`;
  const textEncoder = new TextEncoder();
  const email = base64UrlEncode(textEncoder.encode(text));
  const body = JSON.stringify({
    raw: email
  const SEND_URL = `${user_id}/messages/send`;

  const response = await fetch(SEND_URL, {
    method: "POST",
    headers: { Authorization: "Bearer " + token },

  const result = await handleSendEmailResult(await response.json(), to_email);
  return result;

async function handleSendEmailResult(result: object, to_email: string) {
  if (Object.keys(result).includes('error')) {
    return Promise.reject({ wm_to_email: to_email, ...result });

  return result;

Submitted by adam186 9 days ago

Edited 5 days ago

No comments yet