捷凌网安JAVA频道
捷凌IT教育
首页 资讯动态 认证考试 新手入门 核心技术 高级技术 J2EE J2ME 开源技术 其他技术 论坛
 您现在的位置: 捷凌网安 >> Java >> 核心技术 >> 网络编程 >> 正文
Javamail写带附件eml文件并调用Outlook

作者:佚名 责任编辑:左决 点击数: 更新时间:2008-3-23 20:33:43

1 将邮件写入到文件的代码

msg.saveChanges();
File f = new File("d:/test.eml");
msg.wrITeTo(new FileOutputStream(f));

2 调用outlook的代码

Process p = Runtime.getRuntime().exec("cmd /C start msimn.exe /eml:d:/test.eml");

3 完整的代码如下

package code.jdk.mail;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Date;
import java.util.Enumeration;
import java.util.HashMap;
import java.util.Properties;
import java.util.Vector;

import javax.activation.DataHandler;
import javax.activation.FileDataSource;
import javax.mail.Address;
import javax.mail.AuthenticationFailedException;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Multipart;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;
import javax.mail.internet.MimeUtilITy;

public class EmailWrITeToFile {
// 定义发件人、收件人、SMTP服务器、用户名、密码、主题、内容等
private String displayName;

private String to;

private String from;

private String smtpServer;

private String username;

private String password;

private String subject;

private String content;

private boolean ifAuth; // 服务器是否要身份认证

private String filename = "";

private Vector file = new Vector(); // 用于保存发送附件的文件名的集合

private String contentType = "text/html";

private String charset = "utf-8";

public void addFile(String filename) {
file.add(filename);
}

public String getContentType() {
return contentType;
}

public void setContentType(String contentType) {
this.contentType = contentType;
}

public String getCharset() {
return charset;
}

public void setCharset(String charset) {
this.charset = charset;
}

/**
* 设置SMTP服务器地址
*/
public void setSmtpServer(String smtpServer) {
this.smtpServer = smtpServer;
}

/**
* 设置发件人的地址
*/
public void setFrom(String from) {
this.from = from;
}

/**
* 设置显示的名称
*/
public void setDisplayName(String displayName) {
this.displayName = displayName;
}

/**
* 设置服务器是否需要身份认证
*/
public void setIfAuth(boolean ifAuth) {
this.ifAuth = ifAuth;
}

/**
* 设置E-mail用户名
*/
public void setUserName(String username) {
this.username = username;
}

/**
* 设置E-mail密码
*/
public void setPassword(String password) {
this.password = password;
}

/**
* 设置接收者
*/
public void setTo(String to) {
this.to = to;
}

/**
* 设置主题
*/
public void setSubject(String subject) {
this.subject = subject;
}

/**
* 设置主体内容
*/
public void setContent(String content) {
this.content = content;
}

public EmailWrITeToFile() {

}

private int port = 25;

public int getPort() {
return port;
}

public void setPort(int port) {
this.port = port;
}

/**
* 发送邮件
*
* @throws IOException
* @throws FileNotFoundException
*/
public boolean send() throws FileNotFoundException, IOException {
HashMap<String, String> map = new HashMap<String, String>();
map.put("state", "success");
String message = "邮件发送成功!";
Session session = null;
Properties props = System.getProperties();
props.put("mail.smtp.host", smtpServer);
props.put("mail.smtp.port", port);
try {

props.put("mail.smtp.auth", "false");
session = Session.getDefaultInstance(props, null);

session.setDebug(false);
Transport trans = null;
Message msg = new MimeMessage(session);
try {
Address from_address = new InternetAddress(from, displayName);
msg.setFrom(from_address);
} catch (java.io.UnsupportedEncodingException e) {
e.printStackTrace();
}
InternetAddress[] address = { new InternetAddress(to) };
msg.setRecipients(Message.RecipientType.TO, address);
msg.setSubject(subject);
Multipart mp = new MimeMultipart();
MimeBodyPart mbp = new MimeBodyPart();
mbp.setContent(content.toString(), getContentType() + "; charset=" + getCharset());
mp.addBodyPart(mbp);
if (!file.isEmpty()) {// 有附件
Enumeration efile = file.elements();
while (efile.hasMoreElements()) {
mbp = new MimeBodyPart();
filename = efile.nextElement().toString(); // 选择出每一个附件名
FileDataSource fds = new FileDataSource(filename); // 得到数据源
mbp.setDataHandler(new DataHandler(fds)); // 得到附件本身并至入BodyPart
mbp.setFileName(MimeUtilITy.encodeText(fds.getName(), getCharset(),"B")); // 得到文件名同样至入BodyPart
mp.addBodyPart(mbp);
}
file.removeAllElements();
}
msg.setContent(mp); // Multipart加入到信件
msg.setSentDate(new Date()); // 设置信件头的发送日期
// 发送信件
msg.saveChanges();
File f = new File("d:/test.eml");
msg.wrITeTo(new FileOutputStream(f));

} catch (AuthenticationFailedException e) {
map.put("state", "failed");
message = "邮件发送失败!错误原因: " + "身份验证错误!";
e.printStackTrace();
return false;
} catch (MessagingException e) {
message = "邮件发送失败!错误原因: " + e.getMessage();
map.put("state", "failed");
e.printStackTrace();
Exception ex = null;
if ((ex = e.getNextException()) != null) {
System.out.println(ex.toString());
ex.printStackTrace();
}
return false;
}
// System.out.println(" 提示信息:"+message);
map.put("message", message);
return true;
}

public static void main(String[] args) throws FileNotFoundException, IOException, InterruptedException {
EmailWriteToFile o = new EmailWrITeToFile();
o.setSmtpServer("localhost");
o.setFrom("from@from.com");
o.setDisplayName("TOM");
o.setTo("to@to.com");
o.setSubject("Test Subject");
o.setContent("Test Content");
o.setCharset("GBK");
o.addFile("e:/读我.txt");
o.send();
Process p = Runtime.getRuntime().exec("cmd /C start msimn.exe /eml:d:/test.eml");

}

}

  • 上一篇文章:

  • 下一篇文章:
  •  
     最进更新
    普通文章J2SE实现windows读取网卡的物05-11
    普通文章Scala—Java的避难所之main(05-11
    普通文章Spring数据源的灵活配置巧应05-11
    普通文章Spring 与 Log4J 进行动态日05-11
    普通文章Heritrix的多线程ToeThread和05-11
    普通文章应用spring示例开发网站构思05-11
    普通文章Spring 数据源配置与应用05-11
    普通文章Spring中的四种声明式事务的05-11
    普通文章Hibernate+Spring搞定Clob、05-11
    普通文章Hibernate的映射关联关系05-11
     
     推荐文章
    推荐文章Java技术开源搜索引擎04-30
    推荐文章Eclipse中建立自己的JUnit测04-30
    推荐文章Eclipse 3.3上安装jadclipse04-30
    推荐文章spring 编程入门十大问题解答04-30
    推荐文章Java编程中Spring的一些负面04-30
    推荐文章Java应用中Hibernate对多表关04-30
    推荐文章关于hibernate的缓存和CRUD04-30
    推荐文章基于Struts1.2的动态多文件上04-30
    推荐文章演示Struts2实现简单上传代码04-30
    推荐文章J2EE学习笔记--Struts初步认04-30
     
     热点文章
    普通文章J2SE实现windows读取网卡的物05-11
    普通文章Scala—Java的避难所之main(05-11
    普通文章Spring数据源的灵活配置巧应05-11
    普通文章Spring 与 Log4J 进行动态日05-11
    普通文章Heritrix的多线程ToeThread和05-11
    普通文章应用spring示例开发网站构思05-11
    普通文章Spring 数据源配置与应用05-11
    普通文章Spring中的四种声明式事务的05-11
    普通文章Hibernate+Spring搞定Clob、05-11
    普通文章Hibernate的映射关联关系05-11

    | 设为首页 | 加入收藏 | 联系站长 | 广告服务 | 友情链接 | 版权申明 | 网站地图 |

    在线交流 捷凌网安主群:51649627
    Copyright 2007-2008 © 捷凌网安. All rights reserved.
    备案序号:蜀ICP备08001812号