diff --git a/Cargo.toml b/Cargo.toml index 0cac00c..d116870 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -11,18 +11,18 @@ authors = ["Alexis Mousset "] keywords = ["email", "smtp", "mailer"] [dependencies] -bufstream = "0.1" -email = "0.0" -log = "0.3" -mime = "0.2" -openssl = "0.8" -rustc-serialize = "0.3" -rust-crypto = "0.2" -time = "0.1" -uuid = { version = "0.3", features = ["v4"] } +bufstream = "^0.1" +email = "^0.0" +log = "^0.3" +mime = "^0.2" +openssl = "^0.9" +rustc-serialize = "^0.3" +rust-crypto = "^0.2" +time = "^0.1" +uuid = { version = "^0.3", features = ["v4"] } [dev-dependencies] -env_logger = "0.3" +env_logger = "^0.3" [features] unstable = [] diff --git a/src/transport/smtp/client/net.rs b/src/transport/smtp/client/net.rs index 5e49e1c..82883b4 100644 --- a/src/transport/smtp/client/net.rs +++ b/src/transport/smtp/client/net.rs @@ -1,6 +1,6 @@ //! A trait to represent a stream -use openssl::ssl::{SslContext, SslStream}; +use openssl::ssl::{Ssl, SslContext, SslStream}; use std::fmt; use std::fmt::{Debug, Formatter}; use std::io; @@ -24,9 +24,13 @@ impl Connector for NetworkStream { match ssl_context { Some(context) => { - match SslStream::connect(context, tcp_stream) { - Ok(stream) => Ok(NetworkStream::Ssl(stream)), - Err(err) => Err(io::Error::new(ErrorKind::Other, err)), + match Ssl::new(context) { + Ok(ssl) => { + ssl.connect(tcp_stream) + .map(|s| NetworkStream::Ssl(s)) + .map_err(|e| io::Error::new(ErrorKind::Other, e)) + } + Err(e) => Err(io::Error::new(ErrorKind::Other, e)), } } None => Ok(NetworkStream::Plain(tcp_stream)), @@ -37,9 +41,14 @@ impl Connector for NetworkStream { *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)), + match Ssl::new(ssl_context) { + Ok(ssl) => { + match ssl.connect(stream.try_clone().unwrap()) { + Ok(ssl_stream) => NetworkStream::Ssl(ssl_stream), + Err(err) => return Err(io::Error::new(ErrorKind::Other, err)), + } + } + Err(e) => return Err(io::Error::new(ErrorKind::Other, e)), } } NetworkStream::Ssl(_) => return Ok(()), @@ -122,4 +131,4 @@ impl Timeout for NetworkStream { NetworkStream::Ssl(ref mut stream) => stream.get_mut().set_write_timeout(duration), } } -} \ No newline at end of file +} diff --git a/src/transport/smtp/mod.rs b/src/transport/smtp/mod.rs index 84c4321..9e2678f 100644 --- a/src/transport/smtp/mod.rs +++ b/src/transport/smtp/mod.rs @@ -101,7 +101,7 @@ impl SmtpTransportBuilder { Some(addr) => { Ok(SmtpTransportBuilder { server_addr: addr, - ssl_context: SslContext::new(SslMethod::Tlsv1).unwrap(), + ssl_context: SslContext::builder(SslMethod::tls()).unwrap().build(), security_level: SecurityLevel::Opportunistic, smtp_utf8: false, credentials: None,