🔪

SwaksでSendGridからメールを送る

2022/01/29に公開

Swaksとは?

Swaks(Swiss Army Knife for SMTP)はコマンドラインで簡単にメールが送れるツールです。apt-getやapt,yum,homebrewでインストールできます。

使い方

SendGridのSMTPを利用する場合は以下の内容で送れます。

swaks --to to@example.com --from from@example.com 
 --server smtp.sendgrid.net --port 587 
 --auth-user apikey
 --auth-passwor SG.XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

オプションはそれぞれ短く指定できます。

swaks -t to@example.com -f from@example.com 
 --s smtp.sendgrid.net -p 587 
 -au apikey
 -ap SG.XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

実行結果

実行するとSMTPのやりとりが確認できます。私はこれまでtelnetを使ったり、shellで実行したりしてきたのですが、swaksなんで知らなかったんだ...感がすごいです。

=== Trying smtp.sendgrid.net:587...
=== Connected to smtp.sendgrid.net.
<-  220 SG ESMTP service ready at geopod-ismtpd-3-1
 -> EHLO 68e051151183
<-  250-smtp.sendgrid.net
<-  250-8BITMIME
<-  250-PIPELINING
<-  250-SIZE 31457280
<-  250-STARTTLS
<-  250-AUTH PLAIN LOGIN
<-  250 AUTH=PLAIN LOGIN
 -> AUTH LOGIN
<-  334 VXNlcm5hbWU6
 -> YXBpa2V5
<-  334 UGFzc3dvcmQ6
 -> Uxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
<-  235 Authentication successful
 -> MAIL FROM:<from@example.com>
<-  250 Sender address accepted
 -> RCPT TO:<to@example.com>
<-  250 Recipient address accepted
 -> DATA
<-  354 Continue
 -> Date: Sat, 29 Jan 2022 08:54:31 +0000
 -> To: to@example.com
 -> From: from@example.com
 -> Subject: test Sat, 29 Jan 2022 08:54:31 +0000
 -> Message-Id: <20220129085431.003503@68e051151183>
 -> X-Mailer: swaks v20190914.0 jetmore.org/john/code/swaks/
 -> 
 -> This is a test mailing
 -> 
 -> 
 -> .
<-  250 Ok: queued as ltDWYzbaRZikkfKFT5LgKA
 -> QUIT
<-  221 See you later
=== Connection closed with remote host.

その他オプション

コマンドベースに色々な値を指定できます。

件名(Subject)

--header 'Subject: hello'

または

--h-Subject hello

本文

--body hello

または

-b hello

本文をファイルで指定

次のようなファイルを用意します。

hello.txt
hello
--data hello.txt

または

-d hello.txt

MIME

テキストとHTMLのマルチパートメールを送る場合は次のように指定できます。

--attach-type text/plain --attach-body 'hello'
--attach-type text/html --attach-body '<strong>strong</strong>'

Discussion