[tip]: Recording people before mailto: link

Jean Louis bugs at gnu.support
Thu Jun 24 13:23:31 UTC 2021


This tip may be useful for people who are using Mutt in connection
with any kind of database like CRM Customer Relationship Management
systems.

I have made a mutt.desktop file in
~/.local/share/applications/mutt.desktop where I am designating a
script which is intercepting mailto: links that I usually click on the
website to contact people:

[Desktop Entry]
Version=1.0
Type=Application
Name=RCD Mutt
GenericName=Email Client
Comment=Mutt
Exec=/home/data1/protected/bin/rcd/rcd-mutt %U
Icon=mutt
Terminal=true
MimeType=x-scheme-handler/mailto;
StartupNotify=false
Categories=Application;


The script `rcd-mutt' basically parses the email address and asks the
user (me) about the group of people where I wish to sort that new
email address. It is recording the new email address into the database
before writing to it. Thus it creates relation to database objects. If
email already exists in the database, it just continues with Mutt.

As script is pretty customized for myself it will not give any useful
insight, but users can make such script in shell or any other
programming language.

Purpose of this explanation is to help users intercept the email
address and record it in a global address book before writing to it. 



#!/usr/bin/env -S clisp -norc
(load "/home/data1/protected/Programming/git/RCDBusiness/lib/lisp/configure-system.lisp")
(load "/home/data1/protected/Programming/git/RCDBusiness/lib/lisp/connect.lisp")
(load "/home/data1/protected/Programming/git/RCDBusiness/lib/lisp/dbtools.lisp")
(load "/home/data1/protected/Programming/git/RCDBusiness/lib/lisp/crmtools.lisp")
(load "/home/data1/protected/Programming/git/RCDBusiness/lib/lisp/utilities.lisp")
(load "/home/data1/protected/Programming/git/RCDBusiness/lib/lisp/shelltools.lisp")

(when *args*
  (let* ((email (string-trim '(#\Space #\Newline #\Tab) (car *args*)))
 	 (email (replace-all email "mailto:" ""))
 	 (question-mark (search "?" email))
 	 (email (if question-mark (substring email 0 question-mark) email)))
     (when email
       (let ((id (rcd-crm-id-by-email email)))
      	(if id
 	    (shell (format nil "mutt ~A" (car *args*)))
	    (let ((account (shell-1st-result "rcd-sql-select.sh account")))
	      (if account
		  (let ((email (sql-escape-string email)))
		    (rcd-sql (format nil "INSERT INTO people (people_lastname, people_account1, people_email1)
                                          VALUES (~A, ~A, ~A)" email account email))
		    (shell (format nil "mutt ~A" (car *args*))))
		  (shell (format nil "yad --center --text \"Could not find account for email ~R. ABORTING.\"" email)))))))))




Jean


More information about the Mutt-users mailing list