我的程序要把图片的路径替换为cid
程序如下:public MimeMultipart CreatHtmlMultipart(List<String> aContentpic) throws IOException, MessagingException{
logger.info("创建带图片html MimeMultipart");
MimeMultipart contentMultipart = new MimeMultipart("related");
//创建保存图片的MimeBodyPart并保存
//图片cid为图片编号,0开始
List<String> Contentpic = aContentpic;
logger.info("List contentpic.size() == "+ new Integer(Contentpic.size()).toString());
for(int i=0;i<Contentpic.size();i++)
{
MimeBodyPart tempBodyPart = new MimeBodyPart();
String filename = Contentpic.get(i);
FileDataSource fileDataSorce = new FileDataSource(filename);
tempBodyPart.setDataHandler(new DataHandler(fileDataSorce));
tempBodyPart.setContentID(new Integer(i).toString());
String newPicName ="cid:"+new Integer(i).toString();
text.replaceAll(filename, newPicName);
contentMultipart.addBodyPart(tempBodyPart);
}
//创建代表MIME消息的MimeMultipart对象
//创建保存html正文的MimeBodyPart对象,保存到MimeMultipart中
MimeBodyPart htmlBodyPart = new MimeBodyPart();
htmlBodyPart.setContent(text,"text/html;charset=gb2312");
contentMultipart.addBodyPart(htmlBodyPart);
return contentMultipart;
}
异常如下:Exception in thread "AWT-EventQueue-0" java.util.regex.PatternSyntaxException: Illegal/unsupported escape sequence near index 3
I:/my doc/work/email/test.gif
^其中/ 是windows那种反斜杠,这里不能打反斜杠
程序如下:public MimeMultipart CreatHtmlMultipart(List<String> aContentpic) throws IOException, MessagingException{
logger.info("创建带图片html MimeMultipart");
MimeMultipart contentMultipart = new MimeMultipart("related");
//创建保存图片的MimeBodyPart并保存
//图片cid为图片编号,0开始
List<String> Contentpic = aContentpic;
logger.info("List contentpic.size() == "+ new Integer(Contentpic.size()).toString());
for(int i=0;i<Contentpic.size();i++)
{
MimeBodyPart tempBodyPart = new MimeBodyPart();
String filename = Contentpic.get(i);
FileDataSource fileDataSorce = new FileDataSource(filename);
tempBodyPart.setDataHandler(new DataHandler(fileDataSorce));
tempBodyPart.setContentID(new Integer(i).toString());
String newPicName ="cid:"+new Integer(i).toString();
text.replaceAll(filename, newPicName);
contentMultipart.addBodyPart(tempBodyPart);
}
//创建代表MIME消息的MimeMultipart对象
//创建保存html正文的MimeBodyPart对象,保存到MimeMultipart中
MimeBodyPart htmlBodyPart = new MimeBodyPart();
htmlBodyPart.setContent(text,"text/html;charset=gb2312");
contentMultipart.addBodyPart(htmlBodyPart);
return contentMultipart;
}
异常如下:Exception in thread "AWT-EventQueue-0" java.util.regex.PatternSyntaxException: Illegal/unsupported escape sequence near index 3
I:/my doc/work/email/test.gif
^其中/ 是windows那种反斜杠,这里不能打反斜杠
解决方案 »
- socket读取字节
- 关于文件的构造函数
- 问一个关于Jtable的问题!
- 关于时区的一个问题
- servlet中显示中文的问题
- Vector存放对象时为什么最后输出的数据都是最后一个存进去的(一个困扰我很久的问题)
- HttpURLConnection发送Post请求能不能传图片?该怎么写?谢
- 哪位有《最新java核心技术 卷二:高级性能》一书的电子版,200分相赠。
- 请问tomcat在那个文件中配置sql server2000的jdbc, 怎么配?
- 求助:java中byte[] 中数据的获取
- 请问2<<3为什么是2乘以8的最有效率的算法?<<这个运算符是什么意思?
- Java中子类可以继承父类的静态方法吗?
text.replaceAll(filename, newPicName);
String filename = Contentpic.get(i)这句改为:
String filename = Contentpic.get(i).toString();
不行的话用try..catch捕获下这个异常
replace 方法虽然采用采用正则表达式工具工作的,但在其内部已经进行了字面模式处理,
所有的字符都视为普通字符处理。不要被 replaceAll 中的 All 欺骗了,这两种方法都替换所有的字符串,只是采用的形式
不同已。
信息: Editer ; text == <html>
<head> </head>
<body>
<p style="margin-top: 0">
<img src="I:\my doc\work\email\test.gif">
</p>
</body>
</html>
本来要替换
I:\my doc\work\email\test.gif
为cid:0的
应该怎么搞?
text = text.replaceAll("I:\\\\my doc\\\\work\\\\email\\\\test.gif", "cid:0");
System.out.print(text);
用replace的代码如下:
public MimeMultipart CreatHtmlMultipart(List<String> aContentpic) throws IOException, MessagingException{
logger.info("创建带图片html MimeMultipart");
MimeMultipart contentMultipart = new MimeMultipart("related"); List<String> Contentpic = aContentpic;
logger.info("List contentpic.size() == "+ new Integer(Contentpic.size()).toString());
//创建代表MIME消息的MimeMultipart对象
//创建保存html正文的MimeBodyPart对象,保存到MimeMultipart中
MimeBodyPart htmlBodyPart = new MimeBodyPart();
htmlBodyPart.setContent(text,"text/html;charset=gb2312");
contentMultipart.addBodyPart(htmlBodyPart);
//创建保存图片的MimeBodyPart并保存
//图片cid为图片编号,0开始
for(int i=0;i<Contentpic.size();i++)
{
MimeBodyPart tempBodyPart = new MimeBodyPart();
String filename = Contentpic.get(i);
FileDataSource fileDataSorce = new FileDataSource(filename);
tempBodyPart.setDataHandler(new DataHandler(fileDataSorce));
tempBodyPart.setContentID(new Integer(i).toString());
String newPicName ="cid:".concat(new Integer(i).toString());
logger.info("Editer ; newPicName == "+ newPicName);
logger.info("Editer ; replace 前 text == "+ text);
text.replace(filename,newPicName);//不工作???
logger.info("Editer ; replace 后 text == "+ text);
contentMultipart.addBodyPart(tempBodyPart);
} return contentMultipart;
}然后运行结果是:
2008-5-30 9:05:38 Ctrl.Editer CreatHtmlMultipart
信息: Editer ; replace 前 text == <html>
<head> </head>
<body>
<p style="margin-top: 0">
<img src="I:\my doc\work\email\test.gif">
</p>
</body>
</html>2008-5-30 9:05:38 Ctrl.Editer CreatHtmlMultipart
信息: Editer ; replace 后 text == <html>
<head> </head>
<body>
<p style="margin-top: 0">
<img src="I:\my doc\work\email\test.gif">
</p>
</body>
</html>
然后再用replace,
replace("I:/my doc/work/email/test.gif","cid:0");
的执行效果如下:
2008-5-30 10:02:26 Ctrl.Editer CreatHtmlMultipart
信息: Editer ; replace 前 text == <html>
<head> </head>
<body>
<p style="margin-top: 0">
<img src="I:/my doc/work/email/test.gif">
</p>
</body>
</html>
2008-5-30 10:02:26 Ctrl.Editer CreatHtmlMultipart
信息: Editer ; replace 后 text == <html>
<head> </head>
<body>
<p style="margin-top: 0">
<img src="I:/my doc/work/email/test.gif">
</p>
</body>
</html>