Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我如何使用几种smtp配置与Phoenix/Bamboin一起发送电子邮件?_Smtp_Elixir_Phoenix Framework - Fatal编程技术网

我如何使用几种smtp配置与Phoenix/Bamboin一起发送电子邮件?

我如何使用几种smtp配置与Phoenix/Bamboin一起发送电子邮件?,smtp,elixir,phoenix-framework,Smtp,Elixir,Phoenix Framework,我正在使用Elixir/Phoenix开发后端。该后端将由多个前端使用,每个前端需要使用不同的smtp服务器/配置发送电子邮件 我怎样才能用竹子电子邮件实现这一点呢?我还没有测试过这个,但我认为它可以工作: #在config/config.exs文件中 # #可能需要添加其他特定于适配器的配置。 #确保检查适配器的文档。例如,Mailgun需要一个'domain'密钥。 配置:我的应用程序,MyApp.MandrillMailer, 转接器:竹子,山楂, api_密钥:“我的api_密钥” #配

我正在使用Elixir/Phoenix开发后端。该后端将由多个前端使用,每个前端需要使用不同的smtp服务器/配置发送电子邮件


我怎样才能用竹子电子邮件实现这一点呢?

我还没有测试过这个,但我认为它可以工作:

#在config/config.exs文件中
#
#可能需要添加其他特定于适配器的配置。
#确保检查适配器的文档。例如,Mailgun需要一个'domain'密钥。
配置:我的应用程序,MyApp.MandrillMailer,
转接器:竹子,山楂,
api_密钥:“我的api_密钥”
#配置另一个适配器
配置:my_应用程序,MyApp.SendGridMailer,
适配器:bambol.SendGridAdapter,
api_密钥:“我的api_密钥”
#在你的应用程序中的某个地方
defmodule MyApp.MandrillMailer do
使用bambol.Mailer、otp_应用程序::my_应用程序
结束
defmodule MyApp.SendGridMailer do
使用bambol.Mailer、otp_应用程序::my_应用程序
结束
#定义你的电子邮件
defmodule MyApp.Email do
进口竹子。电邮
欢迎你发电子邮件
新邮件(
至:john@gmail.com",
来自:support@myapp.com",
主题:“欢迎使用该应用程序。”,
html_body:“感谢您的加入!”,
正文:“感谢您的加入!”
)
#或使用竹管。电子邮件功能
新邮件
|>到(”foo@example.com")
|>从(”me@example.com")
|>主题(“欢迎!!!”)
|>html_body(“欢迎””)
|>正文(“欢迎”)
结束
结束
#在控制器或其他模块中
#使用MandrilMailer发送此消息
Email.welcome|u Email |>MandrillMailer.deliver|u立即发送
#您也可以在后台使用Mailer.deliver\u发送电子邮件
#使用SendGridMailer发送此邮件
Email.welcome|u Email |>SendGridMailer.deliver|u稍后
要使使用不同适配器进行发送更具动态性,请执行以下操作:

defmodule MyApp.Mailer do
#将所有已定义的邮件映射到此处
@适配器%{
mandrill:MyApp.MandrillMailer,
发送网格:MyApp.SendGridMailer
}
(适配器\\:mandrill)do的def
地图,去拿!(@适配器,适配器)
结束
结束
#邮件服务可以存储在数据库记录中
邮件服务=:发送网格
Email.welcome_Email |>MyApp.Mailer.for(邮件服务)。立即发送

您需要在运行时使用当前的竹形设置执行此操作。有一个用于运行时配置的适配器。我用这个和你用它的原因一样。我必须从数据存储中获取配置,因为软件用户需要在运行时更改配置


我希望这有帮助。如果您有任何问题,可以将它们放在库的GitHub问题中,我很乐意提供帮助。

您是否尝试过为每个SMTP创建邮件程序?据我所知,您只需要创建一个Mailer模块并设置其配置,如下所示:。@Dogbert必须根据数据库记录在执行时对配置进行动态设置