Re: multipart/alternative not displaying in Yahoo.com

Jean Louis <[email protected]>
Newsgroups gmane.comp.gnu.mailutils.bugs
Message-ID <[email protected]>
On Tue, Apr 18, 2017 at 09:16:45PM +0300, Sergey Poznyakoff wrote:
> Jean Louis <[email protected]> ha escrit:
> 
> > I am compiling and will let you know.
> 
> Thanks.  I'm looking forward to it.
> 
> > The email sending should be by standard, whatever Yahoo does, so I
> > hope that with my request, you did not disturb the standards of
> > sending such multipart emails.
> 
> That's no problem, standards often leave sufficient leeway for 
> misunderstanding between client and server.  The case we're handling is
> just an example of this.  Interoperability is very important, and I
> appreciate very much your help ( and perseverance :) ) in resolving
> this problem.

Thank you. It is working now in Yahoo, I can see the message. It looks
like charset is being set automatically? The HTML file shows
iso-8859-1 and I just hope it does not disturb vieweing the HTML file
which has inside UTF-8 settings, I still think it can disturb it.

It can be that I caused this problem by adding the Content-Disposition
or by not using correctly the mail utility. Below you can find how I
am using it. 

;;; GNU Mailutils functions

;;; echo "Hello" | mail -a "Date: `/bin/date +'%a, %d %b %Y %T %z'`" -a "From: Mr. John Doe  <[email protected]>" -E 'set record=maildir:~/Maildir/[email protected]' -s "Test (DELETE ME)" admin@localhost

(defun mu-set-record (maildir)
  (if maildir
    (format nil " -E 'set record=maildir:~~/Maildir/~a' " maildir)
    nil))

(defun mu-subject (subject)
  (format nil " -s '~a' " subject))

(defun mu-from (name from)
  (format nil " -a \"From: ~a <~a>\" " name from))

(defun mu-header-unicode ()
  (concatenate 'string
               " -a \"Content-Type: text/plain; charset=utf-8\" "
               " -a \"Content-Disposition: inline\" "
               " -a \"Content-Transfer-Encoding: 8bit\" "))

(defun mu-html-alternative (file)
  (if (not (zerop (length file)))
    (format nil " --alternative --content-type=text/html --attach=~a" file)
    ""))

(defun mu-to (name to)
  (setf name (substitute #\- #\@ name))
  (setf name (substitute #\. #\, name))
  (setf name (substitute #\Space #\. name))
  (if (> (length name) 0)
    (format nil " \"~a <~a>\" " name to)
    (format nil " \"~a\" " to)))

(defun mu-date ()
  (format nil " -a \"Date: `/bin/date +'%a, %d %b %Y %T %z'`\" "))

(defun mu-attach (file)
  (if (zerop (length (namestring file)))
    ""
    (format nil " -A \"~a\" " file)))

(defun mu-attachments (attachments)
  (if (listp attachments)
    (format nil " ~{~a~} " (map 'list #'mu-attach attachments))
    (mu-attach attachments)))

(defun mu-body-type (type)
  (format nil " --content-type=~a " type))

(defun mu-mail (&key from-name from-email to-email (to-name "") subject (set-record to-email) body (attachments "") (html-alternative "") (test nil)
                     (body-type "text/plain"))
  (let ((mu-mail (concatenate 'string
			      "mail -E \"unset askcc\" "
			      (mu-date)
                              (mu-header-unicode)
			      (mu-from from-name from-email)
			      (mu-set-record set-record)
			      (mu-subject subject)
                              (mu-html-alternative html-alternative)
			      (mu-attachments attachments)
			      (mu-to to-name to-email)
                              (mu-body-type body-type)
                              )))
    (if test
      (format t "~%FROM: ~a ~a, TO: ~a ~a, SUBJECT: ~a~%"
              from-name from-email to-name to-email subject)
      (values (with-input-from-string (s body)
                (uiop:run-program mu-mail :input s :external-format uiop:*utf-8-external-format*))
              mu-mail))))

;; (princ (cadr (multiple-value-list
;; (mu-mail :from-name "Jean Louis"
;; 	 :from-email "[email protected]"
;; 	 :to-email "[email protected]"
;; 	 :to-name "Jean Louis"
;; 	 :subject "Hello there"
;;          :body-type "text/plain"
;; 	 :body "Text message here čekaj ™ ® "
;;          :html-alternative "/home/data1/protected/public_html/index.html") ) ))

;; :attachments (list "/tmp/file" "/tmp/anotherfile")




and this one I use to send email by using makemime utility:

;; (ql:quickload "cl-rfc2047")

(defun makemime-send (text html &key from-name from-email to-name to-email subject)
  (let* ((text-file "/dev/shm/text-file")
         (html-file "/dev/shm/html-file")
         (text-file (progn
                      (alexandria:write-string-into-file text text-file :if-does-not-exist :create :if-exists :supersede)
                     text-file))
         (html-file (progn
                      (alexandria:write-string-into-file html html-file :if-does-not-exist :create :if-exists :supersede)
                     html-file))
         (makemime-file "/dev/shm/makemime")
         (makemime-set (alexandria:write-string-into-file (format nil "-j
(
-m
multipart/alternative
-a
Mime-Version: 1.0
-a
From: ~a <~a>
-a
To: ~a <~a>
-a
Subject: ~a
-a
Content-Disposition: inline
-e
quoted-printable
-C utf-8
(
-c text/plain
-C utf-8
~a
)
)
(
-c text/html
-N HTML
-C utf-8
~a
)
" (cl-rfc2047:encode from-name) from-email
  (cl-rfc2047:encode to-name) to-email
  subject text-file html-file) makemime-file :if-exists :supersede :if-does-not-exist :create))
    (makemime (slurp-stream-io-command "makemime @-" makemime-set))
    (sendmail (format nil "/usr/bin/sendmail -F \"~a\" -f ~a" from-name from-email)))
 (string-to-command sendmail makemime)))

;; (send-example)

(defun send-example ()
  (makemime-send
 "Hello čč"
 "<!doctype html public \"-//W3C//DTD HTML 4.0 Transitional //EN\">
<html>
<head>
  <meta http-equiv=\"Content-Type\"
        content=\"text/html; charset=utf-8\">  <title></title>
</head>
<body>
<h2>Hello there</h2>

<p>http://www.google.com</p>

<p>This is some text here. č</p>
</body>
</html>"
 :from-name "Jean"
 :from-email "[email protected]"
 :to-name "Mr. L č™''"
 :to-email "[email protected]"
 :subject "Hello there čč ™ omasdans kjnaksnd kjansdjkn akjnd jknajksnd ajksns"))

;; (send-example)


_______________________________________________
Bug-mailutils mailing list
[email protected]
https://lists.gnu.org/mailman/listinfo/bug-mailutils
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.