Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.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
Java 与电子邮件签名中图像的实现相关的一些问题?_Java_Email_Base64_Mime Types - Fatal编程技术网

Java 与电子邮件签名中图像的实现相关的一些问题?

Java 与电子邮件签名中图像的实现相关的一些问题?,java,email,base64,mime-types,Java,Email,Base64,Mime Types,我需要实现与图像的电子邮件签名。到目前为止,我们只支持电子邮件签名中的文本已经在工作。我需要提供的功能 我可以在邮件签名中插入图像。我可以将电子邮件发送给我的应用程序中的用户,也可以发送给外部邮件域(如gmail、yahoo等)中的用户 在我的应用程序系统中,邮件被发送给某个用户,当接收者在收件箱中收到邮件时,系统会将其输入数据库(收件箱内部读取数据库中的邮件)。现在如果用户 通过gmail将邮件发送给外部用户,它使用javax邮件api。类似地,我现在可以从外部邮件域(gmail、yahoo等

我需要实现与图像的电子邮件签名。到目前为止,我们只支持电子邮件签名中的文本已经在工作。我需要提供的功能 我可以在邮件签名中插入图像。我可以将电子邮件发送给我的应用程序中的用户,也可以发送给外部邮件域(如gmail、yahoo等)中的用户 在我的应用程序系统中,邮件被发送给某个用户,当接收者在收件箱中收到邮件时,系统会将其输入数据库(收件箱内部读取数据库中的邮件)。现在如果用户 通过gmail将邮件发送给外部用户,它使用javax邮件api。类似地,我现在可以从外部邮件域(gmail、yahoo等)接收电子邮件 基于tis要求的几个问题:-

1)对于gmail等外部邮件域如何将签名内的图像发送到其他域(我的应用程序邮件域),是否有任何标准? 另一点与之相关的是,gmail用户可以有两张图像,一张用于签名,另一张在身体内部。我将如何确定哪个图像属于哪个 签名?是否有任何已定义的属性?

2)也无法确定发送包含以下内容的电子邮件签名的最佳/一致方法(无论是发送给内部应用程序用户还是外部邮件域用户) 图像,以便用户收到时正确渲染?

我对第2点的想法:-我之前认为我可以使用在上建议的解决方案。哪里 使用标记,我可以在action类或servlet中从db获取图像并返回。但是记住 一旦我通过gmail将邮件发送给用户,他将无法访问servlet,因此这种方法似乎不符合要求。 然后我发现了另一个很棒的stackoverflow链接在哪里 Tim Medora的解决方案看起来很棒,但Gmail解决方案下方的评论似乎并不支持它,这再一次结束了我的家人 真的,我认为如果像gmail、yahoo这样的邮件域支持由建议的解决方案,我应该这样做,因为在这种情况下,我可以将图像作为base64字符串发送 将图像作为附件


如果您能为我提供一些关于第1点和第2点的指针/方法,大家会非常感激。要在电子邮件中包含图像,首先您必须将图像作为MIME附件包含在电子邮件中。每个附件都必须有“内容ID”标题


要在电子邮件中包含图像,首先必须将图像作为MIME附件包含在电子邮件中。每个附件都必须有“内容ID”标题


为了让Gmail从字节数组中看到嵌入的图像,我发布了一个答案,就是使用ByteArrayDataSource并将其嵌入到HtmlMail中。下面是代码片段:

<img src="cid:theImage@abcd" />

为了让Gmail从字节数组中看到嵌入的图像,我发布了一个答案,就是使用ByteArrayDataSource并将其嵌入到HtmlMail中。下面是代码片段:

<img src="cid:theImage@abcd" />

嗨,迈克尔,谢谢你的回答。你是说我在java类中发送消息时必须这样做吗。如果是,我在示例中没有看到设置properties base64 string、content id、content type等的内容。请您为我指出一些代码片段,以完成您在java第1点中解释的内容。对不起,我是新来的。另一点是,我不能像这样简单地将其作为base64字符串发送,而不是发送附件。因此,在我的帖子中询问的第1点上提供一些输入将很有帮助。感谢您,将base64编码的图像数据包含在图像URL中称为数据URI。如果这不起作用,那么您将不得不添加图像作为附件。您引用的网站中的
SimpleMail2
代码示例(第三个示例)显示了如何执行此操作。Java Mail API自动对图像进行base64编码,并为您添加适当的邮件标题,这就是为什么您在代码示例中没有看到这些内容。谢谢Michael。它带来了一点清晰度。你能解释一下我帖子中的第一点吗。我只是在这里再次重复一下,有没有任何标准,用于外部邮件域(如gmail)如何将图像内部签名发送到其他域(如我的应用程序邮件域)?另一点与之相关的是,gmail用户可以有两张图像,一张用于签名,另一张在身体内部。我将如何确定哪个图像属于签名?有什么明确的属性吗?嗨,迈克尔,谢谢你的回答。你是说我在java类中发送消息时必须这样做吗。如果是,我在示例中没有看到设置properties base64 string、content id、content type等的内容。请您为我指出一些代码片段,以完成您在java第1点中解释的内容。对不起,我是新来的。另一点是,我不能像这样简单地将其作为base64字符串发送,而不是发送附件。因此,在我的帖子中询问的第1点上提供一些输入将很有帮助。感谢您,将base64编码的图像数据包含在图像URL中称为数据URI。如果这不起作用,那么您将不得不添加图像作为附件。您引用的网站中的
SimpleMail2
代码示例(第三个示例)显示了如何执行此操作。Java Mail API自动对图像进行base64编码,并为您添加适当的邮件标题,这就是为什么您在代码示例中没有看到这些内容。谢谢Michael。它带来了一点清晰度。你能解释一下我帖子中的第一点吗。我只是在这里再次重复一下,有没有任何标准,用于外部邮件域(如gmail)如何将图像内部签名发送到其他域(如我的应用程序邮件域)?另一点与之相关的是,gmail用户可以有两张图像,一张用于签名,另一张在身体内部。我将如何确定哪个图像属于签名?是否有任何定义的属性?在第一个方面,a
import javax.mail.util.ByteArrayDataSource;
import org.apache.commons.mail.ImageHtmlEmail;
...
ImageHtmlEmail email = new ImageHtmlEmail();
byte[] qrImageBytes = createQRCode(); // get your image byte array
ByteArrayDataSource qrImageDataSource = new ByteArrayDataSource(qrImageBytes, "image/png");
String contentId = email.embed(qrImageDataSource, "QR Image");