2022-08-24 14:28:45 +02:00

29 lines
563 B
Elixir

defmodule Newsletter do
def read_emails(path) do
File.read!(path) |> String.split("\n", trim: true)
end
def open_log(path) do
File.open!(path, [:write])
end
def log_sent_email(pid, email) do
IO.puts(pid, "#{email}")
end
def close_log(pid) do
File.close(pid)
end
def send_newsletter(emails_path, log_path, send_fun) do
log = open_log(log_path)
read_emails(emails_path)
|> Enum.map(fn email ->
with :ok <- send_fun.(email) do
log_sent_email(log, email)
end
end)
close_log(log)
end
end