Struct rfc5321::client::SmtpClient

source ·
pub struct SmtpClient { /* private fields */ }

Implementations§

source§

impl SmtpClient

source

pub async fn new<A: ToSocketAddrs + ToString + Clone>( addr: A, timeouts: SmtpClientTimeouts ) -> Result<Self>

source

pub fn with_stream<S: AsyncReadAndWrite + 'static, H: AsRef<str>>( stream: S, peer_hostname: H, timeouts: SmtpClientTimeouts ) -> Self

source

pub fn set_tracer(&mut self, tracer: Arc<dyn SmtpClientTracer + Send + Sync>)

source

pub fn timeouts(&self) -> &SmtpClientTimeouts

source

pub async fn read_response( &mut self, command: Option<&Command>, timeout_duration: Duration ) -> Result<Response, ClientError>

source

pub async fn send_command( &mut self, command: &Command ) -> Result<Response, ClientError>

source

pub async fn pipeline_commands( &mut self, commands: Vec<Command> ) -> Vec<Result<Response, ClientError>>

Issue a series of commands, and return the responses to those commands.

If the server advertised the RFC 2920 PIPELINING extension, the commands are written one after the other before waiting to read any data, resulting in lower overall latency due to round-trip-times.

If PIPELINING is not available, each command is written and the response read before attempting to write the next command.

The number of returned responses may be smaller than the number of requested commands if there is an issue with the network connection.

source

pub async fn ehlo( &mut self, ehlo_name: &str ) -> Result<&HashMap<String, EsmtpCapability>, ClientError>

source

pub async fn auth_plain( &mut self, username: &str, password: Option<&str> ) -> Result<(), ClientError>

source

pub async fn starttls( &mut self, options: TlsOptions ) -> Result<TlsStatus, ClientError>

Attempt TLS handshake. Returns Err for IO errors. On completion, return an option that will be:

  • Some(handshake_error) - if the handshake failed
  • None - if the handshake succeeded
source

pub async fn send_mail<B: AsRef<[u8]>, SENDER: Into<ReversePath>, RECIP: Into<ForwardPath>>( &mut self, sender: SENDER, recipient: RECIP, data: B ) -> Result<Response, ClientError>

Trait Implementations§

source§

impl Debug for SmtpClient

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Drop for SmtpClient

source§

fn drop(&mut self)

Executes the destructor for this type. Read more

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

§

impl<T> Instrument for T

§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided [Span], returning an Instrumented wrapper. Read more
§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
source§

impl<T, U> Into<U> for T
where U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

§

fn vzip(self) -> V

§

impl<T> WithSubscriber for T

§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a [WithDispatch] wrapper. Read more