当前位置:  技术问答>java相关

我用javamail,发附件的功能怎么做呢?

    来源: 互联网  发布时间:2015-05-07

    本文导语:  发附件的功能怎么做呢? | MimeMessage message=new MimeMessage(session); MimeBodyPart messageBodyPart=new MimeBodyPart(); Multipart multipart=new MimeMultipart(); multipart.addBodyPart(messageBodyPart); File attachment; attachment=new ...

发附件的功能怎么做呢?

|
MimeMessage message=new MimeMessage(session);
MimeBodyPart messageBodyPart=new MimeBodyPart();
Multipart multipart=new MimeMultipart();
multipart.addBodyPart(messageBodyPart);
File attachment;
attachment=new File(附件路径);
FileDataSource fileDataSource=new FileDataSource(attachment);
messageBodyPart.setDataHandler(new DataHandler(fileDataSource));
messageBodyPart.setFileName(attachment.getName());
multipart.addBodyPart(messageBodyPart);
message.setContent(multipart);
Transport.send(message);

|
看javamail带的例子,

|
利用Sun公司提供的JavaMail API可以很方便的开发邮件发送程序。也许你已经可以利用它来发送一段简单的文本了,但想不想使你的程序像OUTLOOK一样也能发送附件呢?本文在简单介绍了JavaMail之后,详细讲解了一段完整的送信的JavaBean及一个十分轻巧的servlet。 

(没有装载JavaMail API的读者,可以到此站点下载,并按照Readme.txt设置好ClassPath) 
一、JavaMail中一些我们需要的类 
1.Properties 

JavaMail需要Properties来创建一个session对象,其属性值就是发送邮件的主机,如: 

Properties props = new Properties ();
props.put("mail.smtp.host", "smtp.xxxx.com");//可以换上你的smtp主机名,就像你在OutLook中设置smtp主机名一样。 

2.Session 

所有的基于JavaMail的程序都至少需要一个或全部的对话目标。 

Session session = Session.getInstance(props, null); 

3.MimeMessage 

信息对象将把你所发送的邮件真实的反映出来。 

MimeMessage msg = new MimeMessage(session); 

4.Transport 

邮件的发送是由Transport来完成的: 

Transport.send(msg); 

二、我们自己创建的可发送附件的类 
import java.util.* ;
import java.io.* ;
import javax.mail.* ;
import javax.mail.internet.* ;
import javax.activation.* ;
public class Mail {
//定义发件人、收件人、主题等
String to="";
String from="";
String host="";
String filename="";
String subject="";
//用于保存发送附件的文件名的集合
Vector file = new Vector();
//做一个可以传发件人等参数的构造
public Mail (String to,String from,String smtpServer,String subject){
//初始化发件人、收件人、主题等
this.to=to;
this.from=from;
this.host=smtpServer;
this.subject=subject;
}
//该方法用于收集附件名
public void attachfile(String fname){
file.addElement(fname);
}
//开始发送信件的方法
public boolean startSend(){
//创建Properties对象
Properties props = System.getProperties();
//创建信件服务器
props.put("mail.smtp.host", host);
//得到默认的对话对象
Session session=Session.getDefaultInstance(props, null); try {
//创建一个消息,并初始化该消息的各项元素
MimeMessage msg = new MimeMessage(session);
msg.setFrom(new InternetAddress(from));
InternetAddress[] address={new InternetAddress(to)};
msg.setRecipients(Message.RecipientType.TO,address);
msg.setSubject(subject);
//后面的BodyPart将加入到此处创建的Multipart中
Multipart mp = new MimeMultipart();
//利用枚举器方便的遍历集合
Enumeration efile=file.elements();
//检查序列中是否还有更多的对象
while(efile.hasMoreElements()){
MimeBodyPart mbp=new MimeBodyPart();
//选择出每一个附件名
filename=efile .nextElement().toString();
//得到数据源
FileDataSource fds=new FileDataSource(filename);
//得到附件本身并至入BodyPart
mbp.setDataHandler(new DataHandler(fds));
//得到文件名同样至入BodyPart
mbp.setFileName(fds.getName());
mp.addBodyPart(mbp);
}
//移走集合中的所有元素
file.removeAllElements();
//Multipart加入到信件
msg.setContent(mp);
//设置信件头的发送日期
msg.setSentDate(new Date());
//发送信件
Transport.send(msg);
} catch (MessagingException mex) {
mex.printStackTrace();
Exception ex = null;
if ((ex=mex.getNextException())!=null){
ex.printStackTrace();
}
return false;
}
return true;
}


三、一个简单的servlet 
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
public class SendMail extends
HttpServlet implements SingleThreadModel{
public void init(ServletConfig Conf)
throws ServletException {
super.init(Conf);
}
public void doPost(HttpServletRequest
Req, HttpServletResponse Res)
throws ServletException, IOException {
try{
//实例化刚才我们做的类,并按其构造传进相应的参数
Mail sendmail=newMail("zhang@263.net",
"chtwoy@21cn.com","smtp.21cn.com","test");
sendmail.attachfile("table.pdf");
sendmail.startSend();
}catch(Exception e){
e.printStackTrace();
}
}
public void destroy() {
}


四、小结 
至此,你已经可以在邮件中添加附件了,而且可以是多个。像这样,将响应与逻辑相分离对代码的扩展和维护是相当有好处的。若Beans与servlet不在同一个包下,别忘了“import”。  

|
利用Sun公司提供的JavaMail API可以很方便的开发邮件发送程序。也许你已经可以利用它来发送一段简单的文本了,但想不想使你的程序像OUTLOOK一样也能发送附件呢?本文在简单介绍了JavaMail之后,详细讲解了一段完整的送信的JavaBean及一个十分轻巧的servlet。 

(没有装载JavaMail API的读者,可以到此站点下载,并按照Readme.txt设置好ClassPath) 
一、JavaMail中一些我们需要的类 
1.Properties 

JavaMail需要Properties来创建一个session对象,其属性值就是发送邮件的主机,如: 

Properties props = new Properties ();
props.put("mail.smtp.host", "smtp.xxxx.com");//可以换上你的smtp主机名,就像你在OutLook中设置smtp主机名一样。 

2.Session 

所有的基于JavaMail的程序都至少需要一个或全部的对话目标。 

Session session = Session.getInstance(props, null); 

3.MimeMessage 

信息对象将把你所发送的邮件真实的反映出来。 

MimeMessage msg = new MimeMessage(session); 

4.Transport 

邮件的发送是由Transport来完成的: 

Transport.send(msg); 

二、我们自己创建的可发送附件的类 
import java.util.* ;
import java.io.* ;
import javax.mail.* ;
import javax.mail.internet.* ;
import javax.activation.* ;
public class Mail {
//定义发件人、收件人、主题等
String to="";
String from="";
String host="";
String filename="";
String subject="";
//用于保存发送附件的文件名的集合
Vector file = new Vector();
//做一个可以传发件人等参数的构造
public Mail (String to,String from,String smtpServer,String subject){
//初始化发件人、收件人、主题等
this.to=to;
this.from=from;
this.host=smtpServer;
this.subject=subject;
}
//该方法用于收集附件名
public void attachfile(String fname){
file.addElement(fname);
}
//开始发送信件的方法
public boolean startSend(){
//创建Properties对象
Properties props = System.getProperties();
//创建信件服务器
props.put("mail.smtp.host", host);
//得到默认的对话对象
Session session=Session.getDefaultInstance(props, null); try {
//创建一个消息,并初始化该消息的各项元素
MimeMessage msg = new MimeMessage(session);
msg.setFrom(new InternetAddress(from));
InternetAddress[] address={new InternetAddress(to)};
msg.setRecipients(Message.RecipientType.TO,address);
msg.setSubject(subject);
//后面的BodyPart将加入到此处创建的Multipart中
Multipart mp = new MimeMultipart();
//利用枚举器方便的遍历集合
Enumeration efile=file.elements();
//检查序列中是否还有更多的对象
while(efile.hasMoreElements()){
MimeBodyPart mbp=new MimeBodyPart();
//选择出每一个附件名
filename=efile .nextElement().toString();
//得到数据源
FileDataSource fds=new FileDataSource(filename);
//得到附件本身并至入BodyPart
mbp.setDataHandler(new DataHandler(fds));
//得到文件名同样至入BodyPart
mbp.setFileName(fds.getName());
mp.addBodyPart(mbp);
}
//移走集合中的所有元素
file.removeAllElements();
//Multipart加入到信件
msg.setContent(mp);
//设置信件头的发送日期
msg.setSentDate(new Date());
//发送信件
Transport.send(msg);
} catch (MessagingException mex) {
mex.printStackTrace();
Exception ex = null;
if ((ex=mex.getNextException())!=null){
ex.printStackTrace();
}
return false;
}
return true;
}


三、一个简单的servlet 
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
public class SendMail extends
HttpServlet implements SingleThreadModel{
public void init(ServletConfig Conf)
throws ServletException {
super.init(Conf);
}
public void doPost(HttpServletRequest
Req, HttpServletResponse Res)
throws ServletException, IOException {
try{
//实例化刚才我们做的类,并按其构造传进相应的参数
Mail sendmail=newMail("zhang@263.net",
"chtwoy@21cn.com","smtp.21cn.com","test");
sendmail.attachfile("table.pdf");
sendmail.startSend();
}catch(Exception e){
e.printStackTrace();
}
}
public void destroy() {
}


四、小结 
至此,你已经可以在邮件中添加附件了,而且可以是多个。像这样,将响应与逻辑相分离对代码的扩展和维护是相当有好处的。若Beans与servlet不在同一个包下,别忘了“import”。  

    
 
 

您可能感兴趣的文章:

  • 为什么用JAVAMAIL发附件,用OUTLOOK收下来附件文件名的中文成了乱码
  • 怎么用javamail发送附件,小弟刚接触,请各位大侠指教,谢谢!!!
  • 请问各位大虾,不用javaMail如何才能发送附件。
  • javamail附件名称的问题
  • javaMail怎么发送多附件???
  • javamail的中文附件名问题。。。:(
  • 我用javamail包,取Mail的附件时,为什么的不到中文字符串?
  • 用JavaMail发带附件的mail
  • 怎样显示javamail的附件名为中文?
  • 还是javamail附件中文名字显示问题。
  • 请问javamail是怎么实现附件的发送和接受的?
  • 请问如何在JAVAMAIL中显示图片,如果附件中不是图片,如何给它加上链接让用户下载呢?
  • 高手请帮忙!!JAVAMAIL开发接收中文附件问题,解决再送100
  • javaMail接收附件的问题
  • 用javamail发送附件名为中文名时的一个问题,送分45!!!!
  • javamail 中发邮件时中文附件名的问题
  • 用JavaMail接收邮件时如何判断邮件是否有附件?
  • 如何JavaMail不将附件Base64编码!
  • 问一个通过javamail保存附件的问题
  • javamail附件中文名字乱码问题!
  • 请问怎样用JAVAMAIL实现自动给用户发送邮件的功能?弄好了送100分
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 急! 500分求助! javamail VS esmtp server 的不兼容性问题, javamail高手请进
  • 请给一个javamail的程序实例和javamail api 的下载地址100分!
  • 在那里能下载javamail,高分送上
  • 初学javamail
  • 请教熟悉JavaMail的大虾请帮帮忙,多谢了!
  • javamail如何安装?? (45分)
  • 请问使用JavaMail如何将一个邮件原样转发给另外一个人?
  • 请问使用JavaMail如何将一个邮件原样转发给另外一个人?
  • javamail-android
  • 怎样使用javamail发送带有html格式信息的文件
  • 请问JavaMail的API在什么地方(我用的是VisualAge for java 4.0),急!
  • 用javamail怎么可以成批发送
  • 关于javamail的奇怪问题,请大家相助!
  • jbuilder ,javamail 问题
  • 数据库 iis7站长之家
  • 那里有javamail的教程?
  • javamail的monitor例子问题
  • 请问谁知道到哪里去下载javamail的api文档??
  • 急:jbuilder6.0中怎么安装javamail???
  • javamail的问题??谢谢你的关注!!


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3