Java 黑莓手机邮件&x27;s-多个内容附件

Java 黑莓手机邮件&x27;s-多个内容附件,java,spring,email,Java,Spring,Email,我们想发送一封附有“多个内容”的电子邮件。场景是,如果使用Blackberry读取电子邮件,我们希望显示一个内容,如果在桌面电子邮件客户端读取电子邮件,则显示另一个内容。(Blackberry内容将只是文本,其他设备应读取HTML内容) 我要去做一些研究,但我想知道是否有人能告诉我这听起来不可能 乱七八糟的插图 邮件 内容1=文本/普通设备=黑莓 内容2=文本/html设备=其他所有内容 我们使用的是Java/Spring,这与这里的一般问题无关 非常感谢。您可以使用多部分消息中的子类型来实现这

我们想发送一封附有“多个内容”的电子邮件。场景是,如果使用Blackberry读取电子邮件,我们希望显示一个内容,如果在桌面电子邮件客户端读取电子邮件,则显示另一个内容。(Blackberry内容将只是文本,其他设备应读取HTML内容)

我要去做一些研究,但我想知道是否有人能告诉我这听起来不可能

乱七八糟的插图

邮件
内容1=文本/普通设备=黑莓
内容2=文本/html设备=其他所有内容

我们使用的是Java/Spring,这与这里的一般问题无关

非常感谢。

您可以使用多部分消息中的子类型来实现这一点

您将无法指定哪个部分由哪个邮件客户端打开,但这取决于客户端决定

就实现而言,请看一看如何开始。据我所知,Spring电子邮件集成不直接支持
多部分/可选
消息。

您可以使用多部分消息中的子类型来实现

您将无法指定哪个部分由哪个邮件客户端打开,但这取决于客户端决定


就实现而言,请看一看如何开始。据我所知,Spring email integration不直接支持
多部分/alternative
消息。

您需要在电子邮件中包含多部分/alternative标记。在我的黑莓软件版本中(这将有所不同),它尝试用一个菜单选项以html版本打开电子邮件,以获得纯文本版本


对于复杂的HTML电子邮件,这通常是一种很好的做法,对许多电子邮件客户端都很有帮助,但您无法获得所需的细粒度控制。

您需要在电子邮件中包含multipart/alternative标记。在我的黑莓软件版本中(这将有所不同),它尝试用一个菜单选项以html版本打开电子邮件,以获得纯文本版本


对于复杂的HTML电子邮件,这通常是一种很好的做法,对许多电子邮件客户端都很有帮助,但您无法获得所需的细粒度控制。

您可以以某种方式使用以下代码

File f = new File("e:\\mailFolder");
File[] attachments = f.listFiles();


Multipart multipart = new MimeMultipart();
multipart.addBodyPart(messageBodyPart);

// Part two is attachment
for( int i = 0; i < attachments.length; i++ ) {
messageBodyPart = new MimeBodyPart();
FileDataSource fileDataSource =new FileDataSource(attachments[i]);
messageBodyPart.setDataHandler(new DataHandler(fileDataSource));
messageBodyPart.setFileName(attachments[i].getName());
multipart.addBodyPart(messageBodyPart);
}
File f=新文件(“e:\\mailFolder”);
文件[]附件=f.listFiles();
Multipart Multipart=新的MimeMultipart();
multipart.addBodyPart(messageBodyPart);
//第二部分是附件
对于(int i=0;i
您可以以某种方式使用以下代码

File f = new File("e:\\mailFolder");
File[] attachments = f.listFiles();


Multipart multipart = new MimeMultipart();
multipart.addBodyPart(messageBodyPart);

// Part two is attachment
for( int i = 0; i < attachments.length; i++ ) {
messageBodyPart = new MimeBodyPart();
FileDataSource fileDataSource =new FileDataSource(attachments[i]);
messageBodyPart.setDataHandler(new DataHandler(fileDataSource));
messageBodyPart.setFileName(attachments[i].getName());
multipart.addBodyPart(messageBodyPart);
}
File f=新文件(“e:\\mailFolder”);
文件[]附件=f.listFiles();
Multipart Multipart=新的MimeMultipart();
multipart.addBodyPart(messageBodyPart);
//第二部分是附件
对于(int i=0;i
好的,谢谢,我们实际上想强制黑莓打开文本版本(恐怕是最终用户请求)。嗯。好的,谢谢,我们实际上想强制黑莓打开文本版本(恐怕是最终用户请求)。嗯,谢谢-我想我会添加文本附件,看看黑莓给用户提供了什么选项-我想知道是否有可能在邮件顶部添加链接。XXX需要在电子邮件阅读器上打开文本附件,而不是进入服务器。我尝试了几件事:I)我添加了多部分邮件、文本和html版本,并使用多部分替代设置。结果是黑莓在去掉html标签后显示了html版本。失败。ii)我添加了表格的内联附件。BlackBerry不理解cid:标记。失败。因此,我想我将不得不求助于两封电子邮件。@ashbyp,尽管黑莓手机可能无法显示电子邮件,但它应该有一个菜单选项来获取纯文本。这可能适用于您的用例,也可能不适用于您的用例。显然,我们的用户无法使用黑莓手机上的菜单系统-他们是忙碌的交易者,您不知道吗。。。消息必须在那里,并为他们精心格式化。不过,谢谢你的建议。谢谢-我想我会添加文本附件,看看黑莓给用户提供了哪些选项-我想知道是否有可能在邮件顶部添加一个链接。XXX需要在电子邮件阅读器上打开文本附件,而不是进入服务器。我尝试了几件事:I)我添加了多部分邮件、文本和html版本,并使用多部分替代设置。结果是黑莓在去掉html标签后显示了html版本。失败。ii)我添加了表格的内联附件。BlackBerry不理解cid:标记。失败。因此,我想我将不得不求助于两封电子邮件。@ashbyp,尽管黑莓手机可能无法显示电子邮件,但它应该有一个菜单选项来获取纯文本。这可能适用于您的用例,也可能不适用于您的用例。显然,我们的用户无法使用黑莓手机上的菜单系统-他们是忙碌的交易者,您不知道吗。。。消息必须在那里,并为他们精心格式化。谢谢你的建议。