From: Shannon Sterz <s.sterz@proxmox.com>
To: pbs-devel@lists.proxmox.com
Subject: [pbs-devel] [PATCH proxmox 4/4] sendmail: allow specifying the masked receiver
Date: Wed, 8 Oct 2025 10:50:25 +0200 [thread overview]
Message-ID: <20251008085029.63335-4-s.sterz@proxmox.com> (raw)
In-Reply-To: <20251008085029.63335-1-s.sterz@proxmox.com>
otherwise some receiver would still just use the `reply-all` function
of their mua, which would then also reply to the `noreply` address
here. so instead just allow applications to specify this according to
their needs.
Signed-off-by: Shannon Sterz <s.sterz@proxmox.com>
---
proxmox-sendmail/src/lib.rs | 65 +++++++++++++++++++++++++++++++++----
1 file changed, 59 insertions(+), 6 deletions(-)
diff --git a/proxmox-sendmail/src/lib.rs b/proxmox-sendmail/src/lib.rs
index 1c5daf0f..4a7d827d 100644
--- a/proxmox-sendmail/src/lib.rs
+++ b/proxmox-sendmail/src/lib.rs
@@ -136,6 +136,7 @@ pub struct Mail<'a> {
body_html: Option<String>,
attachments: Vec<Attachment<'a>>,
mask_participants: bool,
+ noreply: Option<Recipient>,
}
impl<'a> Mail<'a> {
@@ -153,6 +154,7 @@ impl<'a> Mail<'a> {
body_html: None,
attachments: Vec::new(),
mask_participants: true,
+ noreply: None,
}
}
@@ -265,6 +267,22 @@ impl<'a> Mail<'a> {
self
}
+ /// Set the receiver that is used when the mail is send in masked mode. `Undisclosed <noreply>`
+ /// by default.
+ pub fn set_masked_mail_and_name(&mut self, name: &str, email: &str) {
+ self.noreply = Some(Recipient {
+ email: email.to_owned(),
+ name: Some(name.to_owned()),
+ });
+ }
+
+ /// Builder-style method to set the receiver when the mail is send in masked mode. `Undisclosed
+ /// <noreply>` by default.
+ pub fn with_masked_receiver(mut self, name: &str, email: &str) -> Self {
+ self.set_masked_mail_and_name(name, email);
+ self
+ }
+
/// Sends the email. This will fail if no recipients have been added.
///
/// Note: An `Auto-Submitted: auto-generated` header is added to avoid triggering OOO and
@@ -433,12 +451,16 @@ impl<'a> Mail<'a> {
let to = if self.to.len() > 1 && self.mask_participants {
// don't disclose all recipients if the mail goes out to multiple
- let recipient = Recipient {
- name: Some("Undisclosed".to_string()),
- email: "noreply".to_string(),
- };
-
- recipient.format_recipient()
+ self.noreply
+ .as_ref()
+ .map(|f| f.format_recipient())
+ .unwrap_or_else(|| {
+ Recipient {
+ name: Some("Undisclosed".to_string()),
+ email: "noreply".to_string(),
+ }
+ .format_recipient()
+ })
} else {
self.to
.iter()
@@ -630,6 +652,37 @@ Content-Type: text/plain;
charset="UTF-8"
Content-Transfer-Encoding: 7bit
+This is just ascii text.
+Nothing too special."#,
+ )
+ }
+
+ #[test]
+ fn multiple_receiver_custom_masked() {
+ let mail = Mail::new(
+ "Sender Name",
+ "mailfrom@example.com",
+ "Subject Line",
+ "This is just ascii text.\nNothing too special.",
+ )
+ .with_recipient_and_name("Receiver Name", "receiver@example.com")
+ .with_recipient("two@example.com")
+ .with_recipient_and_name("mäx müstermänn", "mm@example.com")
+ .with_masked_receiver("Example Receiver", "noanswer@example.com");
+
+ let body = mail.format_mail(0).expect("could not format mail");
+
+ assert_lines_equal_ignore_date(
+ &body,
+ r#"Subject: Subject Line
+From: Sender Name <mailfrom@example.com>
+To: Example Receiver <noanswer@example.com>
+Date: Thu, 01 Jan 1970 01:00:00 +0100
+Auto-Submitted: auto-generated;
+Content-Type: text/plain;
+ charset="UTF-8"
+Content-Transfer-Encoding: 7bit
+
This is just ascii text.
Nothing too special."#,
)
--
2.47.3
_______________________________________________
pbs-devel mailing list
pbs-devel@lists.proxmox.com
https://lists.proxmox.com/cgi-bin/mailman/listinfo/pbs-devel
prev parent reply other threads:[~2025-10-08 8:50 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-10-08 8:49 [pbs-devel] [PATCH proxmox 0/4] improve mail compatability Shannon Sterz
2025-10-08 8:50 ` [pbs-devel] [PATCH proxmox 1/4] sendmail: encode non-ascii filenames to improve compatability Shannon Sterz
2025-10-08 8:50 ` [pbs-devel] [PATCH proxmox 2/4] sendmail: encode non-ascii bodies as base64 to improve comptability Shannon Sterz
2025-10-08 8:50 ` [pbs-devel] [PATCH proxmox 3/4] sendmail: break content disposition headers for attachments Shannon Sterz
2025-10-08 8:50 ` Shannon Sterz [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20251008085029.63335-4-s.sterz@proxmox.com \
--to=s.sterz@proxmox.com \
--cc=pbs-devel@lists.proxmox.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox