一个关于JAVAMAIL的问题,以前是没有人问过的。

dr80 2002-05-16 08:56:12
我想把邮件头的一些东西给去掉,或者换成自己的东西,
比如要修改Content-type的值。但是我用removehander,
addhander,sethander,等,都把原来那个头里的Content-type
去不掉。但是如果要修改“from","to"这些值就是可以的。
我现在急需要解决这个问题。

还有一个问题就是,可不可以直接通过一个输入流,或者文本文件(文本内容就是一个邮件)来直接构造一个MIMEMessage对象,生成一封邮件。
MimeMessage中有一个构造函数是可以使用一个Inputstream的。
但是我不知道怎么用,那位大侠写过的。请把代码贴出来好吗?100分送上。
太感谢了!我十分着急用这个东西的!
...全文
35 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
littlecong 2002-08-23
  • 打赏
  • 举报
回复
Content-type是跟data handler 密切相关的,也就是跟data source有关的


这个InputStream是合法的邮件形成的

我曾经写过这样的程序,透过防火墙发信
发信时,生成MimeMessage对象,然后通过socket和防火墙外的servlet通信,把信以流的形式传出,servlet中利用这个输入流重新构造信件
代码大致如下,希望对你有用

//发信
MimeMessage message = getMessage();
if(message == null){
return false;
}
try{
URL url = new URL(mailOutURL);
HttpURLConnection connection = (HttpURLConnection)url.openConnection();
connection.setDoOutput(true);
OutputStream os = new BufferedOutputStream(connection.getOutputStream());
message.writeTo(os);
os.close();
InputStream is = new BufferedInputStream(connection.getInputStream());
int c = 0;
ByteArrayOutputStream baos = new ByteArrayOutputStream();
while((c=is.read())!=-1){
baos.write(c);
}
is.close();
connection.disconnect();
String ok = baos.toString();
baos.close();
if(needKeepRecord){
record(message);
}
if(OK.equals(ok)){
return true;
}else{
setError("...........");
return false;
}


//servlet 重新构造信件

boolean success = true;
Properties props = new Properties();
props.put("mail.smtp.host" , smtpHost);
props.put("mail.host",smtpHost);
Session session = null;
if(userId !=null){
props.put("mail.smtp.auth", "true");
props.put("mail.smtp.user", userId);
props.put("mail.smtp.password",password);
session = javax.mail.Session.getInstance(props,new MyAuthenticator(userId, password));
}else{
session = javax.mail.Session.getDefaultInstance(props,null);
}
session.setDebug(true);
String error = "";
InputStream is =
new BufferedInputStream(
request.getInputStream());
try{
MimeMessage message = new MimeMessage(session, is);
Transport.send(message);
}catch(MessagingException me){
success = false;
me.printStackTrace();
error = me.toString();
}
is.close();
if(success){
out.print(MailSender.OK);
}else{
out.print(MailSender.FAIL + " " + error);
}
wjmmml 2002-08-23
  • 打赏
  • 举报
回复
up
网上论坛本系统是对网上论坛系统进行管理,主要包括论坛用户登陆注册模块,论坛账户信息模块,论坛发布模块,留言板模块,聊天室管理模块,发送电子邮件模块。其中每各模块都能进行添加,删除,修改,查询的基本操作。: 1.身份验证:包括系统登录和用户注册,登录时需要验证用户的身份,着要把用户提交的数据与保存在数据库中的注册信息进行比较,通过验证才可以进入社区。如果是新来的用户要在登录前先注册用户信息,提交数据; 2.制作留言板:留言板的主要功能就是查看与增加留言,同时也能翻页显示留言信息具有管理员权限的用户,还可以删除留言信息。 3.制作论坛:包括查看帖子的主题列表和查看帖子的发起和回复;每个主题根据该帖子的主题id分别链接该帖子的发起与回复,回复帖只要获取该id值就可; 4.制作聊天室:聊天室的结构与其他模块不太相同,由于聊天室中不能有两个相同的用户名,先判断有没有相同的用户名,才能进入聊天室的用户设置成在线状态。聊天记录储存在数据库中最多能保存17行; 5.发送邮件:先要构建一个JavaMail的开发环境,用户天填写完信息后,输入收信人的邮箱地址,数据会被提交到收信人的页面; 6.更改注册信息:用户注册的资料是可以随时更改的,用户名是注册时取得的,在修改资料是不允许修改,用户名的文本框里使用了只读属性,其他数据在修改后提交会被保存在数据库更新以前的数据。

62,616

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧