Goal
- ElixirのMailmanライブラリを使ってメールを作成し送信する
Dev-Environment
OS: Windows8.1
Erlang: Eshell V7.2.1, OTP-Version 18
Elixir: v1.2.0
Erlang: Eshell V7.2.1, OTP-Version 18
Elixir: v1.2.0
- Mailman: v0.2.1
Ruby: v2.2.3
- Mailcatcher: v0.6.1
Wait a minute
Elixirからライブラリを使ってメールを送ってみます。
今回使うのは、Mailmanと言うライブラリを使って送ります。
今回使うのは、Mailmanと言うライブラリを使って送ります。
当初は、Gmailに送りたかったのですが、
実力不足によりローカルで確認するところまでしかできませんでした。
実力不足によりローカルで確認するところまでしかできませんでした。
Index
Send mail from Elixir (Using Mailman Library)
|> Before you start
|> Using
|> Before you start
|> Using
Before you start
プロジェクトの作成を行う。
Example:
> cd 作業ディレクトリ
> mix new mailman_sample
...
> cd mailman_sample
> mix test
...
ライブラリの取得と依存関係の解決を行う。
File: mix.exs
defmodule MailmanSample.Mixfile do
...
defp deps do
[{:mailman, "~> 0.2.1"}]
end
end
> mix deps.get
...
> mix compile
...
RubyのMailCatcherを利用してメールの確認を行うため、Rubyのプロジェクトの準備も行う。
> cd 作業ディレクトリ
> mkdir mailcatcher_sample
> cd mailcatcher_sample
> bundle init
...
> mailcatcher
Starting MailCatcher
==> smtp://127.0.0.1:1025
==> http://127.0.0.1:1080
Using
メールを送ってみます。
File: lib/mailman_sample.ex
defmodule MailmanSample do
def deliver(email) do
Mailman.deliver(email, config)
end
def config do
%Mailman.Context {
config: %Mailman.LocalSmtpConfig {port: 1025},
composer: %Mailman.EexComposeConfig {}
}
end
Mailman.LocalServer.start 1025
def testing_email do
%Mailman.Email {
subject: "Hello Mailman!",
from: "mailman@elixir.com",
to: ["Takeshi00Miyamoto@gmail.com"],
cc: [],
bcc: [],
data: [name: "darui"],
text: "Hello! <%= name %> These are Unicode: qżźół",
html: """
<html>
<body>
<b>Hello! <%= name %></b> These are Unicode: qżźół
</body>
</html>
"""
}
end
end
iex> MailmanSample.deliver MailmanSample.testing_email
{:ok,
"From: mailman@elixir.com\r\nTo: Takeshi00miyamoto <Takeshi00Miyamoto@gmail.com>\r\nSubject: Hello Mailman!\r\nreply-to: \r\nContent-Type: multipart/alternative;\r\n\tboundary=\"_
=1r1b3r0q0l4g4p4k2a5q094d2n6i6b1u=_\"\r\nMIME-Version: 1.0\r\nDate: Mon, 8 Feb 2016 21:12:46 +0900\r\nMessage-ID: <8c7a9dd93af3ce1f9e50863dbf9dfe31@Takeshi00>\r\n\r\n\r\n--_=1r1b3r
0q0l4g4p4k2a5q094d2n6i6b1u=_\r\nContent-Type: text/plain;\r\n\tcharset=utf-8\r\nContent-Disposition: inline\r\nContent-Transfer-Encoding: quoted-printable\r\n\r\nHello! darui These
are Unicode: q=C5=BC=C5=BA=C3=B3=C5=82\r\n--_=1r1b3r0q0l4g4p4k2a5q094d2n6i6b1u=_\r\nContent-Type: text/html;\r\n\tcharset=utf-8\r\nContent-Disposition: inline\r\nContent-Transfer-
Encoding: quoted-printable\r\n\r\n <html>=0A <body>=0A <b>Hello! darui</b> These are Unicode: =\r\nq=C5=BC=C5=BA=C3=B3=C5=82=0A </body>=0A </html>=0A\r\n--_=1r1b3r0q0l
4g4p4k2a5q094d2n6i6b1u=_--\r\n"}
ごちゃごちゃといろいろ出ていますが、:okが出ているので大丈夫でしょう。
Mailcatcherの方を確認してみます。
Mailcatcherの方を確認してみます。
> mailcatcher
Starting MailCatcher
==> smtp://127.0.0.1:1025
==> http://127.0.0.1:1080
==> SMTP: Received message from '<mailman@elixir.com>' (871 bytes)
うん、来てますね。
気になる人は、MailcatcherのWebUIから確認してみてください
デフォルトなら”http://127.0.0.1:1080"にアクセスすれば、先ほど送ったメールが確認できます。
気になる人は、MailcatcherのWebUIから確認してみてください
デフォルトなら”http://127.0.0.1:1080"にアクセスすれば、先ほど送ったメールが確認できます。
Speaking to oneself
何とかローカルでは、送ったメールを確認することができました。
自分のGoogleアカウントにメールが届くのはいつの日か…
自分のGoogleアカウントにメールが届くのはいつの日か…
しかし、このくらいのことやるのに一日潰すとか…orz