将邮件写入到文件的代码
msg saveChanges();File f = new File( d:/test eml );msg writeTo(new FileOutputStream(f));
调用outlook的代码
Process p = Runtime getRuntime() exec( cmd /C start msimn exe /eml:d:/test eml );
完整的代码如下
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 tpServer;
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/ ;
private String charset = utf ;
public void addFile(String filename) {file add(filename);}
public String getContentType() {return contentType;}
public void setContentType(String contentType) {ntentType = contentType;}
public String getCharset() {return charset;}
public void setCharset(String charset) {this charset = charset;}
/ 设置SMTP服务器地址/public void setSmtpServer(String tpServer) {this tpServer = tpServer;}
/ 设置发件人的地址/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) {ntent = content;}
public EmailWriteToFile() {
}
private int port = ;
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 tp host tpServer);props put( mail tp port port);try {
props put( mail tp 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)); // 得到附件本身并至入BodyPartmbp setFileName(MimeUtility encodeText(fds getName() getCharset() B )); // 得到文件名同样至入BodyPartmp 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( );o setDisplayName( TOM );o setTo( );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 );
lishixinzhi/Article/program/Java/hx/201311/25757
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)