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}%`);
},
});