Java邮件发送
package com.expai.test;
import java.util.Properties; import javax.activation.DataHandler; import javax.activation.DataSource; import javax.activation.FileDataSource; import javax.mail.Message; 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; public class SendMail { public static void main(String[] args) { senMail("d:/测试.xls","163","from@163.com","fromPass","to@163.com","Excel文档","Hi,记得查收邮件哦!"); } //category用哪种邮箱发送 //fromMailAddress发件邮箱地址 //fromMailPassword发件邮箱密码 //toMailAddress收件邮箱地址 //mailTitle邮件标题 //mailContent邮件文本内容 public static void senMail(String fileName,String category,String fromMailAddress,String fromMailPassword,String toMailAddress,String mailTitle,String mailContent){ Properties props = System.getProperties(); // 设置smtp服务器 props.setProperty("mail.smtp.host", "smtp."+category+".com"); // 现在的大部分smpt都需要验证了 props.put("mail.smtp.auth", "true"); Session s = Session.getInstance(props); // 为了查看运行时的信息 s.setDebug(true); // 由邮件会话新建一个消息对象 MimeMessage message = new MimeMessage(s); try { // 发件人 InternetAddress from = new InternetAddress(fromMailAddress); message.setFrom(from); // 收件人
//单发 InternetAddress to = new InternetAddress(toMailAddress); message.setRecipient(Message.RecipientType.TO, to);
//群发
//InternetAddress[] to = InternetAddress.parse("a@163.com,b@163.com");
//message.setRecipients(Message.RecipientType.TO, to); // 邮件标题 message.setSubject(mailTitle); String content = mailTitle; // 邮件内容,也可以使纯文本"text/plain" message.setContent(content, "text/html;charset=GBK"); /****下面代码是发送附件*******/ MimeBodyPart messageBodyPart = new MimeBodyPart(); messageBodyPart.setText(mailContent); Multipart multipart = new MimeMultipart(); multipart.addBodyPart(messageBodyPart); messageBodyPart = new MimeBodyPart(); DataSource source = new FileDataSource(fileName); messageBodyPart.setDataHandler(new DataHandler(source)); //去掉文件路径得到文件名 fileName = fileName.substring(fileName.indexOf("/")+1,fileName.length()); //解决文件中文名乱码问题GBk经测试不行 sun.misc.BASE64Encoder enc = new sun.misc.BASE64Encoder(); messageBodyPart.setFileName("=?UTF-8?B?"+enc.encode(fileName.getBytes())+"?="); //messageBodyPart.setFileName(fileName); multipart.addBodyPart(messageBodyPart); message.setContent(multipart); message.saveChanges(); Transport transport = s.getTransport("smtp"); // smtp验证,就是你用来发邮件的邮箱用户名密码 transport.connect("smtp."+category+".com", fromMailAddress, fromMailPassword); // 发送 transport.sendMessage(message, message.getAllRecipients()); transport.close(); } catch (Exception e) { e.printStackTrace(); } } }