mirror of
https://github.com/chatmail/core.git
synced 2026-04-28 10:56:29 +03:00
First try
This commit is contained in:
3
Cargo.lock
generated
3
Cargo.lock
generated
@@ -200,8 +200,7 @@ dependencies = [
|
||||
[[package]]
|
||||
name = "async-smtp"
|
||||
version = "0.3.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "a9720181a7d56bf3b4d0cfdcb6353df975125996bdd2958b4e639c8317fcaa68"
|
||||
source = "git+https://github.com/async-email/async-smtp?branch=smtptimeout#74f489f29f8cbd2650d69119e63bf9e35e36dc85"
|
||||
dependencies = [
|
||||
"async-native-tls",
|
||||
"async-std",
|
||||
|
||||
@@ -20,7 +20,7 @@ smallvec = "1.0.0"
|
||||
surf = { version = "2.0.0-alpha.4", default-features = false, features = ["h1-client"] }
|
||||
num-derive = "0.3.0"
|
||||
num-traits = "0.2.6"
|
||||
async-smtp = { version = "0.3" }
|
||||
async-smtp = { git = "https://github.com/async-email/async-smtp", branch = "smtptimeout" }
|
||||
email = { git = "https://github.com/deltachat/rust-email", branch = "master" }
|
||||
lettre_email = { git = "https://github.com/deltachat/lettre", branch = "master" }
|
||||
async-imap = "0.3.1"
|
||||
|
||||
@@ -5,6 +5,7 @@ use async_smtp::*;
|
||||
|
||||
use crate::context::Context;
|
||||
use crate::events::Event;
|
||||
use std::time::Duration;
|
||||
|
||||
pub type Result<T> = std::result::Result<T, Error>;
|
||||
|
||||
@@ -30,7 +31,7 @@ impl Smtp {
|
||||
message: Vec<u8>,
|
||||
job_id: u32,
|
||||
) -> Result<()> {
|
||||
let message_len = message.len();
|
||||
let message_len_bytes = message.len();
|
||||
|
||||
let recipients_display = recipients
|
||||
.iter()
|
||||
@@ -47,11 +48,16 @@ impl Smtp {
|
||||
);
|
||||
|
||||
if let Some(ref mut transport) = self.transport {
|
||||
transport.send(mail).await.map_err(Error::SendError)?;
|
||||
// The timeout is 1min + 3min per MB.
|
||||
let timeout = 60 + (180 * message_len_bytes / 1_000_000) as u64;
|
||||
transport
|
||||
.send_with_timeout(mail, Some(&Duration::from_secs(timeout)))
|
||||
.await
|
||||
.map_err(Error::SendError)?;
|
||||
|
||||
context.emit_event(Event::SmtpMessageSent(format!(
|
||||
"Message len={} was smtp-sent to {}",
|
||||
message_len, recipients_display
|
||||
message_len_bytes, recipients_display
|
||||
)));
|
||||
self.last_success = Some(std::time::SystemTime::now());
|
||||
|
||||
|
||||
Reference in New Issue
Block a user