`
中华国锋
  • 浏览: 44773 次
  • 性别: 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>
分享到:
评论

相关推荐

    06 使用JavaMail发送带附件的邮件.exe

    06 使用JavaMail发送带附件的邮件.exe06 使用JavaMail发送带附件的邮件.exe

    javamail 可带附件demo 源码

    JavaMail 是一个开源库,它提供了在Java应用程序中发送和接收电子邮件的标准API。这个源码示例是关于如何使用JavaMail来发送带有附件...这个源码示例是一个很好的起点,帮助开发者理解并应用JavaMail发送带附件的邮件。

    JavaMail发送带附件的邮件

    在JavaMail中发送带附件的邮件是一个常见的需求,尤其对于企业级应用或者自动化任务来说。下面将详细介绍如何使用JavaMail来实现这一功能,以及所需依赖和示例代码。 首先,要使用JavaMail,你需要在项目中添加相应...

    JavaMail(3)——发送带附件的邮件.docx

    在JavaMail中,发送带有附件的邮件涉及到对MIME(Multipurpose Internet Mail Extensions)标准的理解和使用。MIME扩展了邮件协议,允许在邮件中包含多媒体内容,如图片、文档、音频或视频文件等。 在JavaMail中,`...

    Gmail邮件通过JavaMail发送(不带附件与带一个附件)

    本教程将详细讲解如何使用JavaMail API在Gmail上发送邮件,包括不带附件和带有一个附件的情况。 首先,JavaMail是一个开源的Java库,它提供了用于处理邮件的标准API。在使用JavaMail发送邮件前,你需要在项目中引入...

    javamail(带界面的javamail)

    在本项目中,"javamail(带界面的javamail)"显然包含了一个具有图形用户界面(GUI)的示例应用,展示了如何集成JavaMail功能来实现邮件的交互操作。 首先,我们要了解JavaMail的基本概念。JavaMail API 提供了 javax...

    james和javamail实现邮件收发(带发送附件)

    在提供的压缩包文件“james+javaMail收发邮件”中,可能包含了示例代码和配置文件,供开发者参考和学习如何在实际项目中实现邮件收发功能,特别是处理中文内容和附件。通过理解和实践这些示例,开发者可以更好地掌握...

    javamail附件从流中获取

    在"javamail附件从流中获取"这个主题中,我们将深入探讨如何使用JavaMail库从输入流中读取数据并作为邮件附件发送。 首先,我们需要导入JavaMail的相关库,主要包含`javax.mail`和`com.sun.mail`两个包。这两个包...

    javamail收发邮件(带附件,正文带图).doc

    javamail收发邮件(带附件,正文带图).doc

    javaMail 用三种方式实现发送附件

    javaMail 用附件路径,文件流 byte[] 或 base64 字符串 实现发送附件功能

    javamail收取邮件(包括附件)

    首先,确保你的项目中已经引入了JavaMail相关的依赖,如果你使用的是Maven,可以在pom.xml文件中添加以下依赖: ```xml &lt;groupId&gt;com.sun.mail&lt;/groupId&gt; &lt;artifactId&gt;javax.mail &lt;version&gt;1.6.2 ``` 接下来...

    javamail发邮件(带附件)

    ### JavaMail 发送带附件的电子邮件 在Java开发过程中,经常需要通过程序自动发送电子邮件,尤其是在需要进行用户通知、密码重置或者系统日志报告等场景。JavaMail API提供了非常强大的功能来支持这些需求,包括...

    javamail发送邮件(带附件)

    这个资源提供了一个具体的示例,展示了如何使用JavaMail API 来发送带有附件的邮件。以下是对这个主题的详细解释: 首先,你需要理解JavaMail的核心组件。`javax.mail` 和 `javax.mail.internet` 包含了发送邮件所...

    JavaMail邮件发送(带附件)

    JavaMail邮件发送(带附件)

    java 发送附件mail

    总结一下,Java发送带有附件的邮件涉及到JavaMail API的使用,包括配置SMTP服务器、创建邮件对象、添加内容和附件,以及发送邮件等步骤。理解这些步骤和相关类的作用是实现此功能的关键。在处理不同类型的邮件时,...

    Java查询OutLook邮件代码

    `MimeMessage.getContent()` 返回邮件内容,如果邮件包含MIME多部分,我们可以将其转换为 `MimeMultipart` 对象,然后遍历其子部分,找到 `MimeBodyPart` 对象并使用 `saveFile()` 方法保存附件。 8. **安全性和...

    javaMail 全功能 附件 HTML

    javaMail可以代附件,可以发送HTML,可以在HTML只显示图片等

    JAVAMAIL集合发送图片,附件,内容,HTML等得JAVAMAIL代码

    本资源是一个集合发送图片,附件,内容,HTML等得JAVAMAIL代码,并且可以同时发送多个附件多个图片,只需填充VO类,即可直接调用并发送邮件,例子已经写好,只要填充上必要值即可,经163,qq,sina测试没有问题,有...

    javamail.jar,javamail资源包

    `javamail.jar` 文件是JavaMail的核心库,包含了所有必要的类和接口,使得开发者可以在他们的应用程序中集成邮件功能。 在JavaMail中,有几个关键的概念和组件: 1. **Session**: 这是JavaMail中的顶级对象,代表...

Global site tag (gtag.js) - Google Analytics