Struct lettre::transport::smtp::SmtpTransport
source · pub struct SmtpTransport { /* private fields */ }
Expand description
Sends emails using the SMTP protocol
Implementations§
source§impl SmtpTransport
impl SmtpTransport
sourcepub fn relay(relay: &str) -> Result<SmtpTransportBuilder, Error>
pub fn relay(relay: &str) -> Result<SmtpTransportBuilder, Error>
Simple and secure transport, using TLS connections to communicate with the SMTP server
The right option for most SMTP servers.
Creates an encrypted transport over submissions port, using the provided domain to validate TLS certificates.
sourcepub fn starttls_relay(relay: &str) -> Result<SmtpTransportBuilder, Error>
pub fn starttls_relay(relay: &str) -> Result<SmtpTransportBuilder, Error>
Simple and secure transport, using STARTTLS to obtain encrypted connections
Alternative to SmtpTransport::relay
, for SMTP servers
that don’t take SMTPS connections.
Creates an encrypted transport over submissions port, by first connecting using an unencrypted connection and then upgrading it with STARTTLS. The provided domain is used to validate TLS certificates.
An error is returned if the connection can’t be upgraded. No credentials or emails will be sent to the server, protecting from downgrade attacks.
sourcepub fn unencrypted_localhost() -> SmtpTransport
pub fn unencrypted_localhost() -> SmtpTransport
Creates a new local SMTP client to port 25
Shortcut for local unencrypted relay (typical local email daemon that will handle relaying)
sourcepub fn builder_dangerous<T: Into<String>>(server: T) -> SmtpTransportBuilder
pub fn builder_dangerous<T: Into<String>>(server: T) -> SmtpTransportBuilder
Creates a new SMTP client
Defaults are:
- No authentication
- No TLS
- A 60-seconds timeout for smtp commands
- Port 25
Consider using SmtpTransport::relay
or
SmtpTransport::starttls_relay
instead,
if possible.
sourcepub fn from_url(connection_url: &str) -> Result<SmtpTransportBuilder, Error>
pub fn from_url(connection_url: &str) -> Result<SmtpTransportBuilder, Error>
Creates a SmtpTransportBuilder
from a connection URL
The protocol, credentials, host and port can be provided in a single URL.
Use the scheme smtp
for an unencrypted relay (optionally in combination with the
tls
parameter to allow/require STARTTLS) or smtps
for SMTP over TLS.
The path section of the url can be used to set an alternative name for
the HELO / EHLO command.
For example smtps://username:password@smtp.example.com/client.example.com:465
will set the HELO / EHLO name client.example.com
.
scheme | tls parameter | example | remarks |
---|---|---|---|
smtps | - | smtps://smtp.example.com | SMTP over TLS, recommended method |
smtp | required | smtp://smtp.example.com?tls=required | SMTP with STARTTLS required, when SMTP over TLS is not available |
smtp | opportunistic | smtp://smtp.example.com?tls=opportunistic | SMTP with optionally STARTTLS when supported by the server. Caution: this method is vulnerable to a man-in-the-middle attack. Not recommended for production use. |
smtp | - | smtp://smtp.example.com | Unencrypted SMTP, not recommended for production use. |
use lettre::{
message::header::ContentType, transport::smtp::authentication::Credentials, Message,
SmtpTransport, Transport,
};
let email = Message::builder()
.from("NoBody <nobody@domain.tld>".parse().unwrap())
.reply_to("Yuin <yuin@domain.tld>".parse().unwrap())
.to("Hei <hei@domain.tld>".parse().unwrap())
.subject("Happy new year")
.header(ContentType::TEXT_PLAIN)
.body(String::from("Be happy!"))
.unwrap();
// Open a remote connection to example
let mailer = SmtpTransport::from_url("smtps://username:password@smtp.example.com:465")
.unwrap()
.build();
// Send the email
match mailer.send(&email) {
Ok(_) => println!("Email sent successfully!"),
Err(e) => panic!("Could not send email: {e:?}"),
}
sourcepub fn test_connection(&self) -> Result<bool, Error>
pub fn test_connection(&self) -> Result<bool, Error>
Tests the SMTP connection
test_connection()
tests the connection by using the SMTP NOOP command.
The connection is closed afterward if a connection pool is not used.
Trait Implementations§
source§impl Clone for SmtpTransport
impl Clone for SmtpTransport
source§fn clone(&self) -> SmtpTransport
fn clone(&self) -> SmtpTransport
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read more