-
Notifications
You must be signed in to change notification settings - Fork 20
Open
Description
defmodule Datasources.IMAPWorker do
alias Datasources.IMAPSupervisor
import Phoenix.HTML
use Mailroom.Inbox
require Logger
def start_link(opts) do
GenServer.start_link(__MODULE__, opts)
end
def config(opts) do
Logger.info(
"Configuring IMAP Worker with server: #{opts[:server]}, username: #{opts[:username]}, folder: #{Keyword.get(opts, :folder, :inbox)}"
)
config =
Keyword.merge(opts,
server: opts[:server],
username: opts[:username],
password: opts[:password],
ssl: true,
ssl_opts: [
verify: :verify_none
],
folder: Keyword.get(opts, :folder, :inbox),
assigns: %{manager_pid: opts[:manager_pid]}
)
Logger.info("IMAP Worker config created: #{inspect(Keyword.drop(config, [:password]))}")
config
end
match do
all
fetch_mail
process(:process_email)
end
def process_email(%Mailroom.Inbox.MessageContext{
mail_info: mail_info,
message: message,
assigns: assigns
}) do
Logger.info(
"Processing email - ID: #{inspect(mail_info.id)}, Subject: #{mail_info.subject}, From: #{inspect(mail_info.from)}, To: #{inspect(mail_info.to)}"
)
Logger.info("Message context assigns: #{inspect(assigns)}")
body = extract_body(message)
Logger.info("Extracted body length: #{if body, do: String.length(body), else: 0} characters")
:seen
end
defp extract_body(message) do
snip....
end
end
Using this basic setup results in the following exception when receiving any mail:
Error processing %{cc: [], to: ["xx"], from: ["xx"], headers: %{}, subject: "xx", bcc: [], has_attachment: false, recipients: ["xx"]} -> :error, {:badkey, :id, %{cc: [], to: ["xx"], from: ["xx"], headers: %{}, subject: "xx", reply_to: ["xx"], bcc: [], has_attachment: false, recipients: ["xx"]}}, (logger 1.18.2) lib/logger.ex:963: Logger.__do_log__/4
(xx 1.4.0) deps/mailroom/lib/mailroom/inbox.ex:232: anonymous fn/3 in Datasources.IMAPWorker.process_mailbox/2
(elixir 1.18.2) lib/enum.ex:987: Enum."-each/2-lists^foreach/1-0-"/2
(mailroom 0.5.2) lib/mailroom/imap.ex:167: Mailroom.IMAP.search/4
(xx 1.4.0) deps/mailroom/lib/mailroom/inbox.ex:204: Datasources.IMAPWorker.process_mailbox/2
(xx 1.4.0) deps/mailroom/lib/mailroom/inbox.ex:80: Datasources.IMAPWorker.handle_info/2
Metadata
Metadata
Assignees
Labels
No labels