Merge pull request #372 from mibac138/master

feat(all): Merge lettre_email into lettre with a `builder` feature
This commit is contained in:
Alexis Mousset
2019-11-30 21:49:25 +00:00
committed by GitHub
44 changed files with 95 additions and 144 deletions

View File

@@ -9,8 +9,6 @@ install:
- cargo -vV
build: false
test_script:
- cargo clean -p lettre
- cargo build --verbose --manifest-path lettre/Cargo.toml
- cargo clean -p lettre_email -p lettre
- cargo test --verbose --manifest-path lettre_email/Cargo.toml
- cargo build --verbose
- cargo test --verbose

View File

@@ -1,3 +1,10 @@
<a name="Unreleased"></a>
### Unreleased
#### Features
* Merged `lettre_email` into `lettre`. To migrate just replace `lettre_email` with `lettre::builder` and make sure to
enable `builder` feature (it's enabled by default).
<a name="v0.9.2"></a>
### v0.9.2 (2019-06-11)

View File

@@ -1,5 +1,66 @@
[workspace]
members = [
"lettre",
"lettre_email",
]
[package]
name = "lettre"
version = "0.9.2" # remember to update html_root_url
description = "Email client"
readme = "README.md"
homepage = "http://lettre.at"
repository = "https://github.com/lettre/lettre"
license = "MIT"
authors = ["Alexis Mousset <contact@amousset.me>"]
categories = ["email"]
keywords = ["email", "smtp", "mailer"]
edition = "2018"
[badges]
travis-ci = { repository = "lettre/lettre" }
appveyor = { repository = "lettre/lettre" }
maintenance = { status = "actively-developed" }
is-it-maintained-issue-resolution = { repository = "lettre/lettre" }
is-it-maintained-open-issues = { repository = "lettre/lettre" }
[dependencies]
log = "^0.4"
nom = { version = "^5.0", optional = true }
bufstream = { version = "^0.1", optional = true }
native-tls = { version = "^0.2", optional = true }
base64 = { version = "^0.11", optional = true }
hostname = { version = "^0.2", optional = true }
serde = { version = "^1.0", optional = true, features = ["derive"] }
serde_json = { version = "^1.0", optional = true }
fast_chemail = "^0.9"
r2d2 = { version = "^0.8", optional = true }
email = { version = "^0.0.20", optional = true }
mime = { version = "^0.3", optional = true }
time = { version = "^0.1", optional = true }
uuid = { version = "^0.8", features = ["v4"], optional = true }
[dev-dependencies]
env_logger = "^0.7"
glob = "^0.3"
criterion = "^0.3"
[[bench]]
name = "transport_smtp"
harness = false
[features]
default = ["file-transport", "smtp-transport", "sendmail-transport", "builder"]
builder = ["email", "mime", "time", "base64", "uuid"]
unstable = []
serde-impls = ["serde"]
file-transport = ["serde-impls", "serde_json"]
smtp-transport = ["bufstream", "native-tls", "base64", "nom", "hostname"]
sendmail-transport = []
connection-pool = ["r2d2"]
[[example]]
name = "smtp"
required-features = ["smtp-transport"]
[[example]]
name = "smtp_gmail"
required-features = ["smtp-transport"]
[[example]]
name = "builder"
required-features = ["builder"]

View File

@@ -34,21 +34,18 @@ Lettre provides the following features:
## Example
This library requires Rust 1.34 or newer.
This library requires Rust 1.36 or newer.
To use this library, add the following to your `Cargo.toml`:
```toml
[dependencies]
lettre = "0.9"
lettre_email = "0.9"
```
```rust,no_run
extern crate lettre;
extern crate lettre_email;
use lettre::{SmtpClient, Transport};
use lettre_email::{Email, mime::TEXT_PLAIN};
use lettre::{SmtpClient, Transport, Email, mime::TEXT_PLAIN};
use std::path::Path;
fn main() {

View File

@@ -1,9 +1,5 @@
extern crate lettre;
extern crate lettre_email;
extern crate mime;
use lettre::builder::Email;
use lettre::{SmtpClient, Transport};
use lettre_email::Email;
use std::path::Path;
fn main() {

View File

@@ -1 +0,0 @@
../CHANGELOG.md

View File

@@ -1,58 +0,0 @@
[package]
name = "lettre"
version = "0.9.2" # remember to update html_root_url
description = "Email client"
readme = "README.md"
homepage = "http://lettre.at"
repository = "https://github.com/lettre/lettre"
license = "MIT"
authors = ["Alexis Mousset <contact@amousset.me>"]
categories = ["email"]
keywords = ["email", "smtp", "mailer"]
edition = "2018"
[badges]
travis-ci = { repository = "lettre/lettre" }
appveyor = { repository = "lettre/lettre" }
maintenance = { status = "actively-developed" }
is-it-maintained-issue-resolution = { repository = "lettre/lettre" }
is-it-maintained-open-issues = { repository = "lettre/lettre" }
[dependencies]
log = "^0.4"
nom = { version = "^5.0", optional = true }
bufstream = { version = "^0.1", optional = true }
native-tls = { version = "^0.2", optional = true }
base64 = { version = "^0.11", optional = true }
hostname = { version = "^0.2", optional = true }
serde = { version = "^1.0", optional = true, features = ["derive"] }
serde_json = { version = "^1.0", optional = true }
fast_chemail = "^0.9"
r2d2 = { version = "^0.8", optional = true}
[dev-dependencies]
env_logger = "^0.7"
glob = "^0.3"
criterion = "^0.3"
[[bench]]
name = "transport_smtp"
harness = false
[features]
default = ["file-transport", "smtp-transport", "sendmail-transport"]
unstable = []
serde-impls = ["serde"]
file-transport = ["serde-impls", "serde_json"]
smtp-transport = ["bufstream", "native-tls", "base64", "nom", "hostname"]
sendmail-transport = []
connection-pool = [ "r2d2" ]
[[example]]
name = "smtp"
required-features = ["smtp-transport"]
[[example]]
name = "smtp_gmail"
required-features = ["smtp-transport"]

View File

@@ -1 +0,0 @@
../LICENSE

View File

@@ -1 +0,0 @@
../README.md

View File

@@ -1 +0,0 @@
../CHANGELOG.md

View File

@@ -1,32 +0,0 @@
[package]
name = "lettre_email"
version = "0.9.2" # remember to update html_root_url
description = "Email builder"
readme = "README.md"
homepage = "http://lettre.at"
repository = "https://github.com/lettre/lettre"
license = "MIT"
authors = ["Alexis Mousset <contact@amousset.me>"]
categories = ["email"]
keywords = ["email", "mailer"]
edition = "2018"
[badges]
travis-ci = { repository = "lettre/lettre_email" }
appveyor = { repository = "lettre/lettre_email" }
maintenance = { status = "actively-developed" }
is-it-maintained-issue-resolution = { repository = "lettre/lettre_email" }
is-it-maintained-open-issues = { repository = "lettre/lettre_email" }
[dev-dependencies]
lettre = { version = "^0.9", path = "../lettre", features = ["smtp-transport"] }
glob = "0.3"
[dependencies]
email = "^0.0.20"
mime = "^0.3"
time = "^0.1"
uuid = { version = "^0.8", features = ["v4"] }
lettre = { version = "^0.9", path = "../lettre", default-features = false }
base64 = "^0.11"

View File

@@ -1 +0,0 @@
../LICENSE

View File

@@ -1 +0,0 @@
../README.md

View File

@@ -1,18 +1,17 @@
//! Error and result type for emails
use self::Error::*;
use lettre;
use std::io;
use std::{
error::Error as StdError,
fmt::{self, Display, Formatter},
io,
};
/// An enum of all error kinds.
#[derive(Debug)]
pub enum Error {
/// Envelope error
Envelope(lettre::error::Error),
Envelope(crate::error::Error),
/// Unparseable filename for attachment
CannotParseFilename,
/// IO error
@@ -45,8 +44,8 @@ impl From<io::Error> for Error {
}
}
impl From<lettre::error::Error> for Error {
fn from(err: lettre::error::Error) -> Error {
impl From<crate::error::Error> for Error {
fn from(err: crate::error::Error) -> Error {
Error::Envelope(err)
}
}

View File

@@ -1,25 +1,6 @@
//! Lettre is a mailer written in Rust. lettre_email provides a simple email builder.
//!
#![doc(html_root_url = "https://docs.rs/lettre_email/0.9.2")]
#![deny(
missing_docs,
missing_debug_implementations,
missing_copy_implementations,
trivial_casts,
trivial_numeric_casts,
unsafe_code,
unstable_features,
unused_import_braces
)]
pub extern crate mime;
pub mod error;
use crate::error::Error;
use crate::{error::Error as LettreError, EmailAddress, Envelope, SendableEmail};
pub use email::{Address, Header, Mailbox, MimeMessage, MimeMultipartType};
use lettre::{error::Error as LettreError, EmailAddress, Envelope, SendableEmail};
use error::Error;
use mime::Mime;
use std::ffi::OsStr;
use std::fs;
@@ -28,6 +9,14 @@ use std::str::FromStr;
use time::{now, Tm};
use uuid::Uuid;
pub mod error;
impl From<EmailAddress> for email::Mailbox {
fn from(addr: EmailAddress) -> Self {
Mailbox::new(addr.into_inner())
}
}
/// Builds a `MimeMessage` structure
#[derive(PartialEq, Eq, Clone, Debug)]
pub struct PartBuilder {
@@ -492,7 +481,7 @@ impl EmailBuilder {
#[cfg(test)]
mod test {
use super::{EmailBuilder, SendableEmail};
use lettre::EmailAddress;
use crate::EmailAddress;
use time::now;
#[test]

View File

@@ -13,6 +13,8 @@
unused_import_braces
)]
#[cfg(feature = "builder")]
pub mod builder;
pub mod error;
#[cfg(feature = "file-transport")]
pub mod file;

View File

@@ -13,8 +13,6 @@ fn book_test() {
.unwrap()
.parent()
.unwrap()
.parent()
.unwrap()
.join("../website/content/sending-messages"),
); // For some reasons, calling .parent() once more gives us None...