2015-12-02 68 views
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参数。但它也不会发送电子邮件。

回答