使用Scala和Play WS将内嵌图像添加到Mailgun电子邮件中

亚瑟

我可以成功向Mailgun发出POST请求,并按预期接收电子邮件。我正在尝试将图像内联到电子邮件中,但无法解决该问题。

查看https://documentation.mailgun.com/user_manual.html#sending-via-api并选择Java,我可以看到给定的示例FileDataBodyPart使用"inline"File引用和MediaType构造了a 看一下curl示例,由于仅引用文件,因此这似乎是不必要的。

这是我发送电子邮件的方法:

  def send(message:EmailMessage) = {
    val postMessage = Map("from" -> Seq(message.from), "to" -> Seq(message.to), "subject" -> Seq(message.subject), "text" -> Seq(message.text), "html" -> Seq(message.html.toString()))
    val logo = FileBody(Play.getExistingFile("/public/images/logo.png").get)
    WS.url(apiUrl).withAuth("api", myKey, WSAuthScheme.BASIC).withBody(logo).post(postMessage)
  }

message.html.toString如下所示:

<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
</head>
<body style="background-color:#9B59B6; padding:10px">
    <img src="cid:logo.png">
    <h1 style="color:#FFF">Activate!</h1>
</body>
</html>

发送电子邮件时找到了logo.png文件,并且电子邮件运行正常,但是没有图像。这是电子邮件来源到达gmail后的样子:

Mime-Version: 1.0
Content-Type: text/html; charset="ascii"
Content-Transfer-Encoding: 7bit

<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
        <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    </head>
    <body style="background-color:#9B59B6; padding:10px">
        <img src="cid:logo.png">
        <h1 style="color:#FFF">Activate!</h1>
    </body>
</html>

我在电子邮件中看不到图像的任何base64编码。当curl示例似乎只是在POST中传递文件时,尽管我会尝试这样做。这是我所做的:

  def send(message:EmailMessage) = {

    val logoFile = Play.getExistingFile("/public/images/logo.png").get
    val source = Files.readAllBytes(Paths.get(logoFile.getAbsolutePath))
    val logoBase64 = Base64.encodeBase64String(source)

    val postMessage = Map("from" -> Seq(message.from), "to" -> Seq(message.to), "subject" -> Seq(message.subject), "text" -> Seq(message.text), "html" -> Seq(message.html.toString()), "inline" -> Seq(logoBase64))
    WS.url("https://api.mailgun.net/v2/sandboxaa9afcea1f2e4d5db5e2c080f7784b74.mailgun.org/messages").withAuth("api", "key-f165695d4c72e929ff8215115e648c95", WSAuthScheme.BASIC).post(postMessage)
  }

我将徽标转换为base64,并像其他参数一样过帐。仍然没有喜悦。

我在这里想念什么?我是否需要在主体中传递它,但是以某种方式指定这是“内联”文件?

亚瑟

我通过使用Jersey解决了这个问题,如关于库的部分中所建议:https : //documentation.mailgun.com/libraries.html#java

我使用以下命令在sbt中导入Jersey:

libraryDependencies += "com.sun.jersey" % "jersey-core" % "1.18.3"

libraryDependencies += "com.sun.jersey" % "jersey-client" % "1.18.3"

libraryDependencies += "com.sun.jersey.contribs" % "jersey-multipart" % "1.18.3"

然后创建我的电子邮件发送对象,如下所示:

object Email {

  val client = Client.create()
  client.addFilter(new HTTPBasicAuthFilter("api", current.configuration.getString("mailgun.api.key").get))
  val webResource = client.resource(current.configuration.getString("mailgun.api.url").get)

  def send(message:EmailMessage) = {
    val form = new FormDataMultiPart
    form.field("from", message.from)
    form.field("to", message.to)
    form.field("subject", message.subject)
    form.field("text", message.text)
    form.field("html", message.html.toString())
    val logo = Play.getExistingFile("/public/images/logo.png").get
    form.bodyPart(new FileDataBodyPart("inline", logo, MediaType.APPLICATION_OCTET_STREAM_TYPE))

    webResource.`type`(MediaType.MULTIPART_FORM_DATA_TYPE).post(form)
  }
}

我希望这可以帮助别人。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何使用PHPMailer将HTML,CSS和PHP添加到电子邮件中?

来自分类Dev

使用Outlook VBA将多个附件添加到单个电子邮件中

来自分类Dev

使用mailto Javascript将本地文件的链接添加到电子邮件中

来自分类Dev

PHP PEAR Mail和Mail_mime将附件添加到使用SMTP发送的电子邮件中

来自分类Dev

使用代码点火器和SendGrid将HTML标签添加到电子邮件中

来自分类Dev

如何使用php中的api调用将电子邮件地址添加到mailchimp列表

来自分类Dev

如何使用EWS托管API 2.2将联系人添加到电子邮件中

来自分类Dev

当使用 c# 编码为 CID 时,从电子邮件中检索和显示内嵌图像

来自分类Dev

Python:SMTPLIB和MIMETEXT将附件添加到电子邮件

来自分类Dev

将经度和纬度添加到电子邮件Android

来自分类Dev

使用curl命令将电子邮件地址添加到sendgrid

来自分类Dev

使用cpanel将新电子邮件添加到已配置的Outlook.com帐户

来自分类Dev

Xcode:使用选择器将附件添加到电子邮件

来自分类Dev

使用curl命令将电子邮件地址添加到sendgrid

来自分类Dev

使用Python将电子邮件与内嵌图像发送到Gmail

来自分类Dev

MailGun:将数据变量添加到电子邮件

来自分类Dev

仅当客户未使用优惠券时,才将优惠券添加到处理订单电子邮件中

来自分类Dev

Outlook 2007:如何在不使用鼠标的情况下将表格视图中的电子邮件添加到所选内容中?

来自分类Dev

使用C#代码将收件人添加到现有收件人列表中-Sitecore电子邮件广告系列经理

来自分类Dev

如何将电话号码和电子邮件验证添加到Kendo-UI Grid?

来自分类Dev

如何将电子邮件添加到使用电话验证登录的帐户-Flutter&Firebase

来自分类Dev

如何使用GetBobContent获取多个文件并将其作为附件添加到Azure Logic应用中的电子邮件?

来自分类Dev

无法使用MailKit将图像嵌入电子邮件中

来自分类Dev

将图像添加到Joomla注册电子邮件

来自分类Dev

使用纯SVG将内嵌标签添加到单杠

来自分类Dev

使用纯SVG将内嵌标签添加到单杠

来自分类Dev

通过 Gmail API 发送带有内嵌图像和纯文本内容的电子邮件

来自分类Dev

如何将Facebook登录名和电子邮件注册都添加到我的Google Cloud Endpoints App(Java)?

来自分类Dev

如何在Play 2.3和Scala 2.11中使用play-plugins-mailer?

Related 相关文章

  1. 1

    如何使用PHPMailer将HTML,CSS和PHP添加到电子邮件中?

  2. 2

    使用Outlook VBA将多个附件添加到单个电子邮件中

  3. 3

    使用mailto Javascript将本地文件的链接添加到电子邮件中

  4. 4

    PHP PEAR Mail和Mail_mime将附件添加到使用SMTP发送的电子邮件中

  5. 5

    使用代码点火器和SendGrid将HTML标签添加到电子邮件中

  6. 6

    如何使用php中的api调用将电子邮件地址添加到mailchimp列表

  7. 7

    如何使用EWS托管API 2.2将联系人添加到电子邮件中

  8. 8

    当使用 c# 编码为 CID 时,从电子邮件中检索和显示内嵌图像

  9. 9

    Python:SMTPLIB和MIMETEXT将附件添加到电子邮件

  10. 10

    将经度和纬度添加到电子邮件Android

  11. 11

    使用curl命令将电子邮件地址添加到sendgrid

  12. 12

    使用cpanel将新电子邮件添加到已配置的Outlook.com帐户

  13. 13

    Xcode:使用选择器将附件添加到电子邮件

  14. 14

    使用curl命令将电子邮件地址添加到sendgrid

  15. 15

    使用Python将电子邮件与内嵌图像发送到Gmail

  16. 16

    MailGun:将数据变量添加到电子邮件

  17. 17

    仅当客户未使用优惠券时,才将优惠券添加到处理订单电子邮件中

  18. 18

    Outlook 2007:如何在不使用鼠标的情况下将表格视图中的电子邮件添加到所选内容中?

  19. 19

    使用C#代码将收件人添加到现有收件人列表中-Sitecore电子邮件广告系列经理

  20. 20

    如何将电话号码和电子邮件验证添加到Kendo-UI Grid?

  21. 21

    如何将电子邮件添加到使用电话验证登录的帐户-Flutter&Firebase

  22. 22

    如何使用GetBobContent获取多个文件并将其作为附件添加到Azure Logic应用中的电子邮件?

  23. 23

    无法使用MailKit将图像嵌入电子邮件中

  24. 24

    将图像添加到Joomla注册电子邮件

  25. 25

    使用纯SVG将内嵌标签添加到单杠

  26. 26

    使用纯SVG将内嵌标签添加到单杠

  27. 27

    通过 Gmail API 发送带有内嵌图像和纯文本内容的电子邮件

  28. 28

    如何将Facebook登录名和电子邮件注册都添加到我的Google Cloud Endpoints App(Java)?

  29. 29

    如何在Play 2.3和Scala 2.11中使用play-plugins-mailer?

热门标签

归档