Skip to content

Instantly share code, notes, and snippets.

@kawaz
Last active March 16, 2020 00:34
Show Gist options
  • Save kawaz/4152434 to your computer and use it in GitHub Desktop.
Save kawaz/4152434 to your computer and use it in GitHub Desktop.
gmailでメール送信するシェルスクリプト
#!/bin/bash
user="[email protected]"
pass="yourpassword"
to="[email protected]"
( sleep 1
echo "EHLO `hostname`"
sleep 1
echo "AUTH PLAIN $(echo -en "$user\0$user\0$pass" | base64)"
sleep 1
echo "MAIL FROM: <$user>"
sleep 1
echo "rCPT TO: <$to>"
sleep 1
echo "DATA"
sleep 1
( echo "Subject: THIS IS TEST"
echo "From: $user"
echo "To: $to"
echo ""
echo "hello gmail"
echo "hehehe"
echo "."
) | perl -pe's/(?<!\r)\n/\r\n/'
sleep 1
echo "quit"
) | openssl s_client -connect smtp.gmail.com:465
@kawaz
Copy link
Author

kawaz commented Nov 27, 2012

改善点

  • STARTTLSするのが面倒だったので465(smtps)につなぎに行ってるけどs_clientに-starttls smtpオプション付けてやればs_clientがSTARTTLSやってくれるらしいので、その場合は587番ポートでも良い。

@kazuihitoshi
Copy link

すごい参考になりました。それで、ちょっと一部問題がありましたので、修正いただけると大変ありがたいです。
ubuntu16.04の #!/bin/sh だと、 echo -en の箇所が -en までを表示対象としてしまうため auth に失敗してしまうようです。
echo コマンドは shに組み込みのコマンドのため、このような違いがでてくるように思います。
1行目を #!/bin/bash に変更いただければどこでも動作するのではないかと思います。

@kawaz
Copy link
Author

kawaz commented Jun 19, 2019

@kazuihitoshi bash にしておきました

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment