about summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorReto Brunner <reto@labrat.space>2019-07-28 14:33:46 +0200
committerDrew DeVault <sir@cmpwn.com>2019-07-29 14:51:12 -0400
commitc81b3eb1cb8f25fb563b7d9ea99814e9ba21c737 (patch)
tree31a1267212475f54c14f9a40d697e32fe004389c
parent989730d47000feb297b5fab4e273a9d9b13c5741 (diff)
downloadaerc-c81b3eb1cb8f25fb563b7d9ea99814e9ba21c737.tar.gz
Sendmail: allow for arbitrary parameters
Allows the outgoing command to contain arguments and flags
-rw-r--r--commands/compose/send.go12
1 files changed, 11 insertions, 1 deletions
diff --git a/commands/compose/send.go b/commands/compose/send.go
index 29da94d..202d8c6 100644
--- a/commands/compose/send.go
+++ b/commands/compose/send.go
@@ -14,6 +14,7 @@ import (
 	"github.com/emersion/go-sasl"
 	"github.com/emersion/go-smtp"
 	"github.com/gdamore/tcell"
+	"github.com/google/shlex"
 	"github.com/miolini/datacounter"
 	"github.com/pkg/errors"
 
@@ -183,7 +184,16 @@ func (_ Send) Execute(aerc *widgets.Aerc, args []string) error {
 	}
 
 	sendmailAsync := func() (int, error) {
-		cmd := exec.Command(uri.Path, rcpts...)
+		args, err := shlex.Split(uri.Path)
+		if err != nil {
+			return 0, err
+		}
+		if len(args) == 0 {
+			return 0, fmt.Errorf("no command specified")
+		}
+		bin := args[0]
+		args = append(args[1:], rcpts...)
+		cmd := exec.Command(bin, args...)
 		wc, err := cmd.StdinPipe()
 		if err != nil {
 			return 0, errors.Wrap(err, "cmd.StdinPipe")