1
当我尝试通过mailgun库发送电子邮件,我得到的错误:** (FunctionClauseError) no function clause matching in IO.chardata_to_string/1
药剂mailgun错误:未在IO.chardata_to_string功能的语句匹配/ 1
我已经捕获测试中的问题:
测试/邮寄者/ mailer_test.ex
defmodule Myapp.MailerTest do
use Myapp.ModelCase
test "mailer test" do
Myapp.Mailer.invitation_email("abc.com", "[email protected]")
end
end
LIB/mailer.ex
defmodule Myapp.Mailer do
use Mailgun.Client, domain: "abc.mailgun.org",
key: "key-abc",
mode: :test,
mailgun_test_file_path: "mail.json"
def invitation_email(host, to_email) do
send_email to: to_email,
from: "[email protected]#{host}",
subject: "Invitation!",
html: "<strong>Welcome</strong>"
end
end
测试运行:
$ mix test test/mailers/mailer_test.ex
Compiled lib/mailer.ex
Generated myapp app
1) test mailer test (Myapp.MailerTest)
test/mailers/mailer_test.ex:4
** (FunctionClauseError) no function clause matching in IO.chardata_to_string/1
stacktrace:
(elixir) lib/io.ex:333: IO.chardata_to_string(nil)
(elixir) lib/file.ex:701: File.write/3
lib/client.ex:22: Mailgun.Client.do_send_email/3
test/mailers/mailer_test.ex:5
Finished in 0.2 seconds (0.1s on load, 0.01s on tests)
1 test, 1 failure
Randomized with seed 182269
另外,顺便说一句,该错误消失,如果我删除mode
参数。但它也不会发送电子邮件。