Skip to content

Error: Badkey? #25

@ponychicken

Description

@ponychicken
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

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions