Тема письма в Rust
Тема не входит в тело и задается своей строкой в цепочке сборки. Ее видят в заголовке сохраненного файла вместе с адресами, а текст письма остается в теле без смешивания с темой.
Соберем сообщение с другой темой и тем же простым телом:
use lettre::{FileTransport, Message, Transport};
fn main() {
match std::fs::create_dir_all("out") {
Ok(()) => {}
Err(e) => {
println!("{}", e);
return;
}
}
let from_addr = match "sender@example.com".parse() {
Ok(a) => a,
Err(e) => {
println!("{}", e);
return;
}
};
let to_addr = match "user@example.com".parse() {
Ok(a) => a,
Err(e) => {
println!("{}", e);
return;
}
};
let email = match Message::builder()
.from(from_addr)
.to(to_addr)
.subject("Report")
.body(String::from("done"))
{
Ok(m) => m,
Err(e) => {
println!("{}", e);
return;
}
};
let sender = FileTransport::new("out");
match sender.send(&email) {
Ok(_) => println!("saved"),
Err(e) => println!("{}", e),
}
}
В каталоге out в новом файле
будет строка темы Report, а тело
останется done. Смена темы не
меняет разбор адресов и не требует другого
транспорта.
Тему можно держать в переменной и передать в сборку из нее:
use lettre::{FileTransport, Message, Transport};
fn main() {
let topic = String::from("Reminder");
match std::fs::create_dir_all("out") {
Ok(()) => {}
Err(e) => {
println!("{}", e);
return;
}
}
let from_addr = match "sender@example.com".parse() {
Ok(a) => a,
Err(e) => {
println!("{}", e);
return;
}
};
let to_addr = match "user@example.com".parse() {
Ok(a) => a,
Err(e) => {
println!("{}", e);
return;
}
};
let email = match Message::builder()
.from(from_addr)
.to(to_addr)
.subject(topic)
.body(String::from("check"))
{
Ok(m) => m,
Err(e) => {
println!("{}", e);
return;
}
};
let sender = FileTransport::new("out");
match sender.send(&email) {
Ok(_) => println!("saved"),
Err(e) => println!("{}", e),
}
}
Дан адрес:
user@example.com
Сохраните в out сообщение с
отправителем sender@example.com,
этим получателем, темой "Tasks"
и телом из одного слова.
Скажите, попадет ли строка темы в тело
файла в out, если ее задали
отдельным шагом сборки.
Дан адрес:
sender@example.com
Запишите переменную topic со
значением "Hello", соберите
сообщение с получателем user@example.com
и сохраните его в out.