diff --git a/Cargo.toml b/Cargo.toml index d6e716f..306c752 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -16,7 +16,7 @@ bufstream = "0.1" email = "0.0" log = "0.3" mime = "0.2" -openssl = "0.7" +openssl = { version = "0.8", features = ["tlsv1_2"] } rustc-serialize = "0.3" rust-crypto = "0.2" time = "0.1" diff --git a/src/transport/smtp/client/mod.rs b/src/transport/smtp/client/mod.rs index fddb61b..4a73f04 100644 --- a/src/transport/smtp/client/mod.rs +++ b/src/transport/smtp/client/mod.rs @@ -66,7 +66,7 @@ impl Client { } } -impl Client { +impl Client { /// Closes the SMTP transaction if possible pub fn close(&mut self) { let _ = self.quit(); diff --git a/src/transport/smtp/client/net.rs b/src/transport/smtp/client/net.rs index 6716122..ed5cd13 100644 --- a/src/transport/smtp/client/net.rs +++ b/src/transport/smtp/client/net.rs @@ -24,7 +24,7 @@ impl Connector for NetworkStream { match ssl_context { Some(context) => { - match SslStream::connect_generic(context, tcp_stream) { + match SslStream::connect(context, tcp_stream) { Ok(stream) => Ok(NetworkStream::Ssl(stream)), Err(err) => Err(io::Error::new(ErrorKind::Other, err)), } @@ -34,16 +34,19 @@ impl Connector for NetworkStream { } fn upgrade_tls(&mut self, ssl_context: &SslContext) -> io::Result<()> { - *self = match self.clone() { - NetworkStream::Plain(stream) => { - match SslStream::connect_generic(ssl_context, stream) { + + *self = match *self { + NetworkStream::Plain(ref mut stream) => { + match SslStream::connect(ssl_context, stream.try_clone().unwrap()) { Ok(ssl_stream) => NetworkStream::Ssl(ssl_stream), Err(err) => return Err(io::Error::new(ErrorKind::Other, err)), } } - NetworkStream::Ssl(stream) => NetworkStream::Ssl(stream), + NetworkStream::Ssl(_) => return Ok(()) }; + Ok(()) + } fn is_encrypted(&self) -> bool { @@ -63,16 +66,6 @@ pub enum NetworkStream { Ssl(SslStream), } -impl Clone for NetworkStream { - #[inline] - fn clone(&self) -> NetworkStream { - match *self { - NetworkStream::Plain(ref stream) => NetworkStream::Plain(stream.try_clone().unwrap()), - NetworkStream::Ssl(ref stream) => NetworkStream::Ssl(stream.try_clone().unwrap()), - } - } -} - impl Debug for NetworkStream { fn fmt(&self, f: &mut Formatter) -> fmt::Result { f.write_str("NetworkStream(_)") diff --git a/src/transport/smtp/mod.rs b/src/transport/smtp/mod.rs index 6b0eeee..2118001 100644 --- a/src/transport/smtp/mod.rs +++ b/src/transport/smtp/mod.rs @@ -137,7 +137,7 @@ impl SmtpTransportBuilder { self } - /// Require SSL/TLS using STARTTLS + /// Require SSL/TLS using SMTPS /// /// Incompatible with `encrypt()` pub fn ssl_wrapper(mut self) -> SmtpTransportBuilder { diff --git a/tests/transport_smtp.rs b/tests/transport_smtp.rs index a1b4b41..9af40d5 100644 --- a/tests/transport_smtp.rs +++ b/tests/transport_smtp.rs @@ -5,7 +5,7 @@ use lettre::transport::EmailTransport; use lettre::email::EmailBuilder; #[test] -fn simple_sender() { +fn smtp_transport_simple() { let mut sender = SmtpTransportBuilder::localhost().unwrap().build(); let email = EmailBuilder::new() .to("root@localhost")