[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
bug#56422: 29.0.50; mail-extract-address-components poorly handles " via
From: |
Sam Steingold |
Subject: |
bug#56422: 29.0.50; mail-extract-address-components poorly handles " via " addresses |
Date: |
Wed, 06 Jul 2022 11:22:35 -0400 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/29.0.50 (darwin) |
Often "From" email addresses in mailing lists look like this:
--8<---------------cut here---------------start------------->8---
From: Po Lu via "Emacs development discussions." <emacs-devel@gnu.org>
From: carlmarcos--- via Users list for the GNU Emacs text editor
<help-gnu-emacs@gnu.org>
From: Stefan Monnier via Users list for the GNU Emacs text editor
<help-gnu-emacs@gnu.org>
--8<---------------cut here---------------end--------------->8---
`mail-extract-address-components' handles them poorly:
--8<---------------cut here---------------start------------->8---
(mail-extract-address-components "Po Lu via \"Emacs development discussions.\"
<emacs-devel@gnu.org>")
=> ("Po Lu via" "emacs-devel@gnu.org")
(mail-extract-address-components "carlmarcos--- via Users list for the GNU
Emacs text editor <help-gnu-emacs@gnu.org>")
=> ("carlmarcos" "help-gnu-emacs@gnu.org")
(mail-extract-address-components "Stefan Monnier via Users list for the GNU
Emacs text editor <help-gnu-emacs@gnu.org>")
=> ("Stefan Monnier via Users list for the" "help-gnu-emacs@gnu.org")
--8<---------------cut here---------------end--------------->8---
The correct handling would be
--8<---------------cut here---------------start------------->8---
(mail-extract-address-components "Po Lu via \"Emacs development discussions.\"
<emacs-devel@gnu.org>")
=> ("Emacs development discussions." "emacs-devel@gnu.org")
(mail-extract-address-components "carlmarcos--- via Users list for the GNU
Emacs text editor <help-gnu-emacs@gnu.org>")
=> ("Users list for the GNU Emacs text editor" "help-gnu-emacs@gnu.org")
(mail-extract-address-components "Stefan Monnier via Users list for the GNU
Emacs text editor <help-gnu-emacs@gnu.org>")
=> ("Users list for the GNU Emacs text editor" "help-gnu-emacs@gnu.org")
--8<---------------cut here---------------end--------------->8---
or, at least,
--8<---------------cut here---------------start------------->8---
(mail-extract-address-components "Po Lu via \"Emacs development discussions.\"
<emacs-devel@gnu.org>")
=> ("Po Lu via \"Emacs development discussions.\"" "emacs-devel@gnu.org")
(mail-extract-address-components "carlmarcos--- via Users list for the GNU
Emacs text editor <help-gnu-emacs@gnu.org>")
=> ("carlmarcos--- via Users list for the GNU Emacs text editor"
"help-gnu-emacs@gnu.org")
(mail-extract-address-components "Stefan Monnier via Users list for the GNU
Emacs text editor <help-gnu-emacs@gnu.org>")
=> ("Stefan Monnier via Users list for the GNU Emacs text editor"
"help-gnu-emacs@gnu.org")
--8<---------------cut here---------------end--------------->8---
Please see the relevant discussion on the BBDB user list:
https://lists.nongnu.org/archive/html/bbdb-user/2022-06/msg00000.html
https://lists.nongnu.org/archive/html/bbdb-user/2022-07/msg00000.html
In https://lists.nongnu.org/archive/html/bbdb-user/2022-07/msg00006.html
I propose a workaround for a _single_ address (i.e., when the second
argument to `mail-extract-address-components' is nil):
--8<---------------cut here---------------start------------->8---
(defun mail-extract-handle-via (args)
"Handle `via` in email address"
(let ((address (car args))
(all (cadr args)))
(if (and (null all)
(string-match " via \\(.*\\)$" address))
(list (match-string 1 address) nil)
(list address all))))
(advice-add 'mail-extract-address-components :filter-args
'mail-extract-handle-via)
--8<---------------cut here---------------end--------------->8---
this is clearly suboptimal, especially when the "name" part of the
address contains many words:
--8<---------------cut here---------------start------------->8---
(mail-extract-address-components "Stefan Monnier via Users list for the GNU
Emacs text editor <help-gnu-emacs@gnu.org>")
("Users list for the" "help-gnu-emacs@gnu.org")
--8<---------------cut here---------------end--------------->8---
It appears that `mail-header-parse-address' is a better choice (as per
https://debbugs.gnu.org/cgi/bugreport.cgi?bug=10406) but you might still
consider addressing this issue...
Thank you.
In GNU Emacs 29.0.50 (build 2, x86_64-apple-darwin21.5.0, NS appkit-2113.50
Version 12.4 (Build 21F79))
of 2022-07-05 built on 3c22fb11fdab.ant.amazon.com
Repository revision: 59276ff81d1ab391f4e3cd91f3070a12c51a3507
Repository branch: master
Windowing system distributor 'Apple', version 10.3.2113
System Description: macOS 12.4
--
Sam Steingold (http://sds.podval.org/) on darwin Ns 10.3.2113
http://childpsy.net http://calmchildstories.com http://steingoldpsychology.com
https://www.peaceandtolerance.org/ https://honestreporting.com
The past is gone, the present is ephemeral, the future is a guess.
- bug#56422: 29.0.50; mail-extract-address-components poorly handles " via " addresses,
Sam Steingold <=