我正在尝试发送带有嵌入式gif图像的多部分/相关html电子邮件.此电子邮件是使用Oracle PL/SQL生成的.我的尝试失败了,图像显示为红色X(在Outlook 2007和雅虎邮件中)
我已经发送了一段时间的HTML电子邮件,但我现在要求在电子邮件中使用几个gif图像.我可以将它们存储在我们的一个Web服务器上并链接到它们,但许多用户的电子邮件客户端不会自动显示它们,并且需要更改设置或手动为每个电子邮件下载它们.
所以,我的想法是嵌入图像.我的问题是:
片段:
MIME-Version: 1.0
To: me@gmail.com
BCC: me@yahoo.com
From: email@yahoo.com
Subject: Test
Reply-To: email@yahoo.com
Content-Type: multipart/related; boundary="a1b2c3d4e3f2g1"
--a1b2c3d4e3f2g1
content-type: text/html;
<html>
<head><title>My title</title></head>
<body>
<div style="font-size:11pt;font-family:Calibri;">
<p><IMG SRC="cid:my_logo" alt="Logo"></p>
... more html here ...
</div></body></html>
--a1b2c3d4e3f2g1
Content-Type: image/gif;
Content-ID:<my_logo>
Content-Transfer-Encoding: base64
Content-Disposition: inline
[base64 image data here]
--a1b2c3d4e3f2g1--
Run Code Online (Sandbox Code Playgroud)
非常感谢.
顺便说一句:是的,我已经验证了base64数据是正确的,因为我可以将图像嵌入到html本身(使用相同的算法用于创建标题数据)并在Firefox/IE中查看图像.
我还应该注意,这不是针对垃圾邮件,而是将电子邮件发送给每天都在期待的特定客户.内容是数据驱动的,而不是广告.
我想在SVG中生成图形,并通过电子邮件发送嵌入其中的图形的HTML页面(不存储在服务器上并显示链接图像).
我尝试使用Object元素直接嵌入SVG,并对SVG进行序列化和URI编码,并将整个字符串指定为div上的背景图像.Outlook 2013中似乎没有显示任何内容.任何想法?
我正在向我的会员发送电子邮件,看起来Gmail正在阻止我在电子邮件中放置的图片.它们作为基础64编码的字符串嵌入到img标记中.我在网上查看了多个关于Gmail不发送图片但没有找到任何有用的内容的主题.以下是我到目前为止尝试过的一些事情.1.在Gmail中启用外部图像(通过设置图标)2.将图像的大小减小到8000字节以下(Outlook.com不会发送图像~15000字节)
如果我发送到outlook.com电子邮件地址,我会收到图片,但在Gmail中,img标签的src为空,电子邮件中没有图片显示.我正在使用https://putsmail.com来测试/发送我的电子邮件,所以我知道问题不是SendGrid(我的电子邮件发送服务)或我的应用程序的问题.
这是我下面的模板之一.我正在使用来自litmuss的电子邮件模板.下面的所有内容基本上都是默认的,除了我添加的额外信息,如图片和电子邮件正文中的一些额外文字.
这是一个带有图像数据的完整模板的jsfiddle,可以直接复制到putsmail中并发送给测试!任何关于Gmail不发送图片的帮助或信息都会很棒!
<!DOCTYPE html>
<html>
<head>
<title></title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<style type="text/css">
/* FONTS */
@@media screen {
@@font-face {
font-family: 'Lato';
font-style: normal;
font-weight: 400;
src: local('Lato Regular'), local('Lato-Regular'), url(https://fonts.gstatic.com/s/lato/v11/qIIYRU-oROkIk8vfvxw6QvesZW2xOQ-xsNqO47m55DA.woff) format('woff');
}
@@font-face {
font-family: 'Lato';
font-style: normal;
font-weight: 700;
src: local('Lato Bold'), local('Lato-Bold'), url(https://fonts.gstatic.com/s/lato/v11/qdgUG4U09HnJwhYI-uK18wLUuEpTyoUstqEm5AMlJo4.woff) format('woff');
}
@@font-face {
font-family: 'Lato';
font-style: italic;
font-weight: 400;
src: local('Lato Italic'), local('Lato-Italic'), url(https://fonts.gstatic.com/s/lato/v11/RYyZNoeFgb0l7W3Vu1aSWOvvDin1pK8aKteLpeZ5c0A.woff) format('woff'); …Run Code Online (Sandbox Code Playgroud)我将jpg图像存储在数据库中(作为字节数组).我想避免在显示在网页上之前删除文件系统.
单元测试表明数据库存储和检索工作没有损坏.可以从数据库中提取Fies并将其转换回jpg文件
图像已转换为bytearray并使用以下代码存储在数据库中:
public static byte[] getImageAsBytes(BufferedImage buffer) throws IOException
{
ByteArrayOutputStream baos = new ByteArrayOutputStream();
ImageIO.write(buffer, "jpg", baos);
baos.flush();
byte[] imageInByte = baos.toByteArray();
baos.close();
return imageInByte;
}
Run Code Online (Sandbox Code Playgroud)
我有一个ViewWrapperMediaImage类,它包含从数据库中检索的字节数组.该类还有一个将bytearray转换为base64 String的方法.
package jake.prototype2.controller.viewwrapper;
import org.apache.commons.codec.binary.Base64;
import jake.prototype2.model.assessment.MediaImage;
import jake.prototype2.model.assessment.TestStructureException;
import jake.prototype2.model.structure.InterfacePersistenceBean;
public class ViewWrapperMediaImageCreate extends ViewWrapperTestContentElementCreate
{
private byte[] image;
protected String mediaFileName;
private static final long serialVersionUID = 4181515305837289526L;
public ViewWrapperMediaImageCreate(InterfacePersistenceBean persistenceBean) throws TestStructureException
{
....
}
}
public byte[] getImage()
{
return image;
}
public String generateBase64Image()
{
return …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用 Thymeleaf 将域名 url 注入到链接中。我的网址是从控制器传递的,因为我记录了日志并看到了它。
我的 Thymeleaf html 模板中的链接如下:
<link type="text/css" th:href="@{${DomainUrl}/web/assets/css/foundation5/foundation.min.css}" rel="stylesheet" />
Run Code Online (Sandbox Code Playgroud)
但是,当我在本地运行它时,它不会替换域,例如,抛出错误(因为当然找不到 URL)呈现如下: http://localhost:8081/pss/ui/ $%7BDomainUrl %7D/web/assets/css/components.css