send

Send a new mail.

Usage

Below is a minimal example of how to use send method (with no optional parameters). It's highly recommended to also use encryption.

const txResponse = await mail.send({
  envelope,
});

Returns

Promise<EthereumTransactionResponse>

A promise that resolves to the response from the sendTransaction method on the walletClient provided by the developer on Mail initialization.

Parameters

options

  • Type MailSendOptions

Configuration for sending mail.

options.envelope

  • Type Envelope

The mail envelope to send.

import type { Envelope } from '@4thtech-sdk/types';

const envelope: Envelope = {
  content: {
    subject: 'Test subject',
    body: 'Test body...', // optional
    attachments: [], // optional
  },
  receiver: '0x...',
};

options.encryption (Optional)

  • Type Encryption

The encryption method to apply to the mail.

const txResponse = await mail.send({
  envelope,
  encryption,
});

options.onStateChange (Optional)

  • Type (state: MailSendState) => void

A callback function to track state changes during the sending process.

import type { MailSendState } from '@4thtech-sdk/types';

const txResponse = await mail.send({
  envelope,
  onStateChange: (state: MailSendState) => {
    console.log(state);
  },
});

MailSendState is an enum of the possible states of the sending process.

  • When sending non-encrypted mail

    • STORING_ATTACHMENTS
    • STORING_ENVELOPE
    • SENDING_TRANSACTION
  • When sending encrypted mail

    • ENCRYPTING_STORING_ATTACHMENTS
    • ENCRYPTING_STORING_ENVELOPE
    • SENDING_TRANSACTION

options.onUploadProgress (Optional)

  • Type (progressInfo: FileProgressInfo) => void

A callback function to track the progress of file uploads when sending the mail.

import type { FileProgressInfo } from '@4thtech-sdk/types';

const txResponse = await mail.send({
  envelope,
  onUploadProgress: (progressInfo: FileProgressInfo) => {
    console.log(`Upload Progress (${progressInfo.fileName}): ${progressInfo.percent}%`);
  },
});
Previous
Mail