The ordinary SMTP path, for applications that do not run on Microsoft 365: a hosting provider’s mailbox, a relay, or your own server. The account stays the customer’s, and the platform holds the password and injects it at deploy time, so it never reaches the repository. Use the library your language already has, whether that’s nodemailer, smtplib, or whatever is idiomatic, and read SMTP_SECURE as a string: implicit TLS on port 465, STARTTLS everywhere else.
An admin enters these once, and the platform injects them as environment variables at deploy time. Your code reads them. It never sees a login screen or an SDK for this.
SMTP_HOSTSMTP_PORTSMTP_SECURESMTP_USERSMTP_PASSMAIL_FROM