{{secret:mailbox-password}}. The password never goes to the model and is not in the result.
This does not read the inbox. IMAP fetch does.
Input
Inspector Settings. Empty-field rules for the Graph: Previous nodes. Insert value is on Host, User, Password, From, To, Subject, Text, HTML, and Message. On an Agent Tool, To, Subject, Text, and HTML can be Agent decides or Fixed. Host, Port, Encryption, User, Password, From, and Message stay on the node.
A line break in To, From, or Subject is removed. If that leaves more than one mailbox, the step fails.
Output
On the next node, Previous nodes listsSend email: Result ({{Send email.text}} while the name is unique).
A refused recipient does not fail the run:
Many recipients
One run sends one page of rows. Read records and Loop cap that page. A Cron trigger starts the next run. Import the list on State. A list that does not fit in one file is a second import into the same collection, with the address as the key. Put this inside the Loop, in order. Name the first Code node Prepare. Itsinput is the current row (input.data is your columns).
email, status, and name are columns in your file. Update records reads this JSON. Leave Collection empty on that node when collection is in the JSON. See Update records.
Send email comes next. Message is {{Prepare.text}}. Host, User, Password, and From use {{secret:Name}}.
Name the next Code node Finish. Its input is the Result above.
100. Rows left at sending stay out of the next run, including when the run stops after the server accepts the message and before Finish.