Skip to content
Send email with code highlighted gfm enabled markdown syntax using terminal VIM as editor. Perfect for developer who likes terminal VIM
JavaScript VimL
Find file
Latest commit 41bdaf3 @chemzqm fix readme
Failed to load latest commit information.
bin change version
lib adjust to v1.0
.gitignore add README file fix readme
email.vim add syntax support
index.js int
package.json change version

Sendmail - Write html email quickly and send it at terminal

Sendmail is a perfect tool for programmers who prefer to use terminal vim as editor and want to write complicated email easily with markdown syntax and highlight enabled.

Attachments, embeded images, load content from file, syntax highlight are supported.


Make sure path ~/bin is included in $PATH, if not, add below to your file ~/.bashrc

  export $PATH=$PATH:~/bin
  git clone
  cd sendmail
  npm install
  ln -s bin/sendmail ~/bin/sendmail


  • Change file sendmail/lib/profile.json.example to sendmail/lib/profile.json.
  • Change text in [] of profile.json to your settings.
  • Below is an example of gmail settings:

        "from":"chemzqm <>"
      "footer":"Thanks,<br />Jack\n",
        "chemzqm":"chemzqm <>",
        "nick":"fullname <>"

    Server settings is the same as project: nodemailer.

Headers is the default head you want to set for your email, including from cc to subject etc.

Contacts is used for convenient input of contacts emails, all the contact's names will be added to the end of email file you are editing, and what you need to do is just type the property name of contacts seperated by , to the fields to and/or cc, the property name will be converted to property value before email sending.

Enable vim highlight

  cp /path/to/sendmail/email.vim ~/.vim/syntax/


  • Enable sendmail by :

    $ ln -s /full/path/to/bin/sendmail ~/bin/sendmail
  • Send a new email:

    $ sendmail

    with optional file content as email content

    $ sendmail filename

    filter is not available yet.

  • Mutiple support

    The email fields 'to', 'cc', 'attachment' could be multiple values seperated by ','

  • Send embeded image, use the following tag in the html sention

    @img('/path/to/file'*[, 'imagename'])

    Notice image name is optional

  • Command line help:

    $ sendmail -h
    Usage: sendmail [options] [number|filename]
      -h, --help                     output usage information
      -V, --version                  output the version number
      -l --list                      show all mails with filename number subject
      -e --edit <number|filename>    edit previous mail by number or filename and send
      -q --quiet                     send email without using vim to edit
      -d --delete <number|filename>  remove email, could be number separated by comma like: 0,1,2
      -c --cat <number>              show email content, could be number separated by comma like: 0,1,2
      -g --grep <text>               grep text in all emails
      -p --profile <name>            use profile when sending email specified by name



Something went wrong with that request. Please try again.