aboutsummaryrefslogtreecommitdiff
path: root/commands
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 /commands
parent989730d47000feb297b5fab4e273a9d9b13c5741 (diff)
Sendmail: allow for arbitrary parameters
Allows the outgoing command to contain arguments and flags
Diffstat (limited to 'commands')
-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")