当前位置:   article > 正文

java 邮件 附件_Java发送邮件(带附件)

multipart.addbodypart是增加一个附件么

importjava.io.File;importjava.io.IOException;importjava.io.InputStream;importjava.util.Properties;importjavax.activation.DataHandler;importjavax.activation.DataSource;importjavax.activation.FileDataSource;importjavax.mail.BodyPart;importjavax.mail.Message;importjavax.mail.MessagingException;importjavax.mail.Multipart;importjavax.mail.Session;importjavax.mail.Transport;importjavax.mail.internet.InternetAddress;importjavax.mail.internet.MimeBodyPart;importjavax.mail.internet.MimeMessage;importjavax.mail.internet.MimeMultipart;importjavax.mail.internet.MimeUtility;public classJavaMailWithAttachment {privateMimeMessage message;privateSession session;privateTransport transport;private String mailHost = "";private String sender_username = "";private String sender_password = "";private Properties properties = newProperties();/** 初始化方法*/

public JavaMailWithAttachment(booleandebug) {

InputStream in= JavaMailWithAttachment.class.getResourceAsStream("MailServer.properties");try{

properties.load(in);this.mailHost = properties.getProperty("mail.smtp.host");this.sender_username = properties.getProperty("mail.sender.username");this.sender_password = properties.getProperty("mail.sender.password");

}catch(IOException e) {

e.printStackTrace();

}

session=Session.getInstance(properties);

session.setDebug(debug);//开启后有调试信息

message = newMimeMessage(session);

}/*** 发送邮件

*

*@paramsubject

* 邮件主题

*@paramsendHtml

* 邮件内容

*@paramreceiveUser

* 收件人地址

*@paramattachment

* 附件*/

public voiddoSendHtmlEmail(String subject, String sendHtml, String receiveUser, File attachment) {try{//发件人

InternetAddress from = newInternetAddress(sender_username);

message.setFrom(from);//收件人

InternetAddress to = newInternetAddress(receiveUser);

message.setRecipient(Message.RecipientType.TO, to);//邮件主题

message.setSubject(subject);//向multipart对象中添加邮件的各个部分内容,包括文本内容和附件

Multipart multipart = newMimeMultipart();//添加邮件正文

BodyPart contentPart = newMimeBodyPart();

contentPart.setContent(sendHtml,"text/html;charset=UTF-8");

multipart.addBodyPart(contentPart);//添加附件的内容

if (attachment != null) {

BodyPart attachmentBodyPart= newMimeBodyPart();

DataSource source= newFileDataSource(attachment);

attachmentBodyPart.setDataHandler(newDataHandler(source));//网上流传的解决文件名乱码的方法,其实用MimeUtility.encodeWord就可以很方便的搞定//这里很重要,通过下面的Base64编码的转换可以保证你的中文附件标题名在发送时不会变成乱码//sun.misc.BASE64Encoder enc = new sun.misc.BASE64Encoder();//messageBodyPart.setFileName("=?GBK?B?" + enc.encode(attachment.getName().getBytes()) + "?=");//MimeUtility.encodeWord可以避免文件名乱码

attachmentBodyPart.setFileName(MimeUtility.encodeWord(attachment.getName()));

multipart.addBodyPart(attachmentBodyPart);

}//将multipart对象放到message中

message.setContent(multipart);//保存邮件

message.saveChanges();

transport= session.getTransport("smtp");//smtp验证,就是你用来发邮件的邮箱用户名密码

transport.connect(mailHost, sender_username, sender_password);//发送

transport.sendMessage(message, message.getAllRecipients());

System.out.println("send success!");

}catch(Exception e) {

e.printStackTrace();

}finally{if (transport != null) {try{

transport.close();

}catch(MessagingException e) {

e.printStackTrace();

}

}

}

}public static voidmain(String[] args) {

JavaMailWithAttachment se= new JavaMailWithAttachment(true);

File affix= new File("c:\\测试-test.txt");

se.doSendHtmlEmail("邮件主题", "邮件内容", "xxx@XXX.com", affix);//}

}

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/很楠不爱3/article/detail/591876
推荐阅读
相关标签
  

闽ICP备14008679号