永发信息网

java中发邮件怎么添加服务器附件

答案:1  悬赏:20  手机版
解决时间 2021-04-27 19:10
java中发邮件怎么添加服务器附件
最佳答案
实现java发送邮件的过程大体有以下几步:

准备一个properties文件,该文件中存放SMTP服务器地址等参数。
利用properties创建一个Session对象
利用Session创建Message对象,然后设置邮件主题和正文
利用Transport对象发送邮件

需要的jar有2个:activation.jar和mail.jar发送附件,需要用到Multipart对象。
import java.io.File;import java.io.IOException;import java.io.InputStream;import java.util.Properties;import javax.activation.DataHandler;import javax.activation.DataSource;import javax.activation.FileDataSource;import javax.mail.BodyPart;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 JavaMailWithAttachment { private MimeMessage message; private Session session; private Transport transport; private String mailHost = ""; private String sender_username = ""; private String sender_password = ""; private Properties properties = new Properties(); public JavaMailWithAttachment(boolean debug) { 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 = new MimeMessage(session); } public void doSendHtmlEmail(String subject, String sendHtml, String receiveUser, File attachment) { try { // 发件人 InternetAddress from = new InternetAddress(sender_username); message.setFrom(from); // 收件人 InternetAddress to = new InternetAddress(receiveUser); message.setRecipient(Message.RecipientType.TO, to); // 邮件主题 message.setSubject(subject); // 向multipart对象中添加邮件的各个部分内容,包括文本内容和附件 Multipart multipart = new MimeMultipart(); // 添加邮件正文 BodyPart contentPart = new MimeBodyPart(); contentPart.setContent(sendHtml, "text/html;charset=UTF-8"); multipart.addBodyPart(contentPart); // 添加附件的内容 if (attachment != null) { BodyPart attachmentBodyPart = new MimeBodyPart(); DataSource source = new FileDataSource(attachment); attachmentBodyPart.setDataHandler(new DataHandler(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 void main(String[] args) { JavaMailWithAttachment se = new JavaMailWithAttachment(true); File affix = new File("c:\\测试-test.txt"); se.doSendHtmlEmail("邮件主题", "邮件内容", "xxx@XXX.com", affix);// }}
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
经不起等待的感情是爱情吗?
求给宝宝取个名
喝豆浆的咨询
关于电脑故障问题
建筑钢筋图纸上标有WKL2(4)后面的括号4是什么
适合乡镇的小生意有哪些
问一下 我在新区练DT 现在流行什么主流加点?
79年12月份参加工作,到2020年6月份60周岁退
形容一个人很忙的成语
庞德不投降蜀汉,是因为对魏忠心,还是怕家里
幸运币是干吗用
inventor2015中接触识别器在哪个菜单里
明天就要开罐子会不会清除
亦庄到西红门怎么坐地铁
华山上有寺庙么
推荐资讯
当一个男人有了情人,为什么还是不愿意跟自己
什么是人生…?
一个人总是喃喃自语,有时候还会手舞足蹈,然后
福彩2009128期号码
C++的编程问题,高手快来
SS501里都有谁?
奇迹MU魔法师的连击怎么出?
药品商人在哪?
云南大学旅游文化学院,我是2010届的新生。
手机硬盘在哪啊?
关于x的方程x2+2(a-1)x+2a+6=0有一正根一负
香塘村地址好找么,我有些事要过去
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?