`
中华国锋
  • 浏览: 41165 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

javamail写带附件eml文件并调用outlook的方法

 
阅读更多
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"); } } </string></string>
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics