Coerce external-program params as simple-strings.
authorMaciej Pasternacki <maciej@pasternacki.net>
Sun, 30 Nov 2008 17:47:33 +0000 (30 18:47 +0100)
committerMaciej Pasternacki <maciej@pasternacki.net>
Sun, 30 Nov 2008 17:47:33 +0000 (30 18:47 +0100)
src/common.lisp

index a983482..2c0069e 100644 (file)
@@ -203,14 +203,16 @@ address (may be a list), BODY-AND-HEADERS is fed to sendmail binary as
 stdin and it may be a string or an input stream.  SENDMAIL-BINARY is
 full path to sendmail binary, as a string, default is taken from
 *CONFIG* section mailing, variable sendmail."
-  (external-program:run
-   sendmail-binary
-   (if (listp rcpt)
-       (list* (concatenate 'string "-f" sender) rcpt)
-       (list (concatenate 'string "-f" sender) rcpt))
-   :input (etypecase body-and-headers
-            (stream body-and-headers)
-            (string (make-string-input-stream body-and-headers)))))
+  (flet ((ss (s)
+           (coerce s 'simple-string)))
+    (external-program:run
+     sendmail-binary
+     (if (listp rcpt)
+         (list* (concatenate 'string "-f" (ss sender)) (mapcar #'ss rcpt))
+         (list (concatenate 'string "-f" (ss sender)) (ss rcpt)))
+     :input (etypecase body-and-headers
+              (stream body-and-headers)
+              (string (make-string-input-stream body-and-headers))))))
 
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;;; Reporting conditions.
@@ -285,10 +287,11 @@ Defaults to \"error\" in *DEFAULT-PATHNAME-DEFAULTS*.")
 
 (defun report-error-by-email (e rcpt &optional (sender (py-configparser:get-option *config* "mailing" "sender")))
   (invoke-sendmail sender rcpt
-                   (format nil "From: <~A>~%To: <~A>~%Subject: Uncaught error ~A~%~%~A"
+                   (format nil "From: <~A>~%To: <~A>~%Subject: Uncaught error ~A~%Content-Type: text/plain; charset=utf-8~%Content-Transfer-Encoding: Quoted-Printable~%~%~A"
                            sender rcpt e
-                           (with-output-to-string (s)
-                             (format-error-report s e)))))
+                           (qp-utf8
+                            (with-output-to-string (s)
+                              (format-error-report s e))))))
 
 (defun report-error (e &optional (mailto (ignore-errors
                                            (py-configparser:get-option *config* "mailing" "error_mailto"))))