Email小案例改进版——解决带附件不显示邮件正文问题
2017-04-08 11:20
507 查看
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.Multipart;
import javax.mail.Session;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;
import javax.mail.Transport;
public class email {
public void send(String emailHost,
//smtp服务器
String toEmail,
//收件人邮箱
String additionalPath,
//附件路径
String additionalName,
//附件名称
String myEmailUser,
//发件邮箱
String myEmailPwd,
//密码
String emailTitle,
//邮件标题
String context
){ //内容
Properties props = new Properties();
props.put("mail.smtp.emailHost",emailHost);
props.put("mail.smtp.auth", "true");
props.put("mail.smtp.port", "587");//qq专用其它不需要
Session session = Session.getDefaultInstance(props);
session.setDebug(true);
MimeMessage message = new MimeMessage(session);
try {
message.setFrom(new InternetAddress(myEmailUser));// 加载发件人地址
message.addRecipient(Message.RecipientType.TO, new InternetAddress(toEmail));// 加载收件人地址
message.setSubject(emailTitle);// 加载标题
Multipart multipart = new MimeMultipart();// 向multipart对象中添加邮件的各个部分内容,包括文本内容和附件
BodyPart contentPart = new MimeBodyPart();
contentPart.setText(context);// 设置邮件的文本内容
multipart.addBodyPart(contentPart);
BodyPart messageBodyPart = new MimeBodyPart();// 添加附件
DataSource source = new FileDataSource(additionalPath);
messageBodyPart.setDataHandler(new DataHandler(source));// 添加附件的内容
sun.misc.BASE64Encoder enc = new sun.misc.BASE64Encoder();
messageBodyPart.setFileName("=?GBK?B?"+enc.encode(additionalName.getBytes())+"?=");
multipart.addBodyPart(messageBodyPart);
message.setContent(multipart);//将multipart对象放到message中
message.saveChanges();// 保存邮件
Transport transport = session.getTransport("smtp");// 发送邮件
transport.connect(emailHost, myEmailUser, myEmailPwd);// 连接服务器的邮箱
transport.sendMessage(message, message.getAllRecipients());// 把邮件发送出去
transport.close();
} catch (Exception e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
email email = new email();
email.send("smtp.qq.com",
"xxxxxxxxx@qq.com",
"E:\\text.txt",
"随便什么鬼",
"xxxxxxxxx@qq.com",
"xxxxxxxxxrqudbgie",//qq为开启smtp给的密钥,其它为密码
"测试邮件",
"我的最新测试邮件!!"
);
}
}
import javax.activation.DataHandler;
import javax.activation.DataSource;
import javax.activation.FileDataSource;
import javax.mail.BodyPart;
import javax.mail.Message;
import javax.mail.Multipart;
import javax.mail.Session;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;
import javax.mail.Transport;
public class email {
public void send(String emailHost,
//smtp服务器
String toEmail,
//收件人邮箱
String additionalPath,
//附件路径
String additionalName,
//附件名称
String myEmailUser,
//发件邮箱
String myEmailPwd,
//密码
String emailTitle,
//邮件标题
String context
){ //内容
Properties props = new Properties();
props.put("mail.smtp.emailHost",emailHost);
props.put("mail.smtp.auth", "true");
props.put("mail.smtp.port", "587");//qq专用其它不需要
Session session = Session.getDefaultInstance(props);
session.setDebug(true);
MimeMessage message = new MimeMessage(session);
try {
message.setFrom(new InternetAddress(myEmailUser));// 加载发件人地址
message.addRecipient(Message.RecipientType.TO, new InternetAddress(toEmail));// 加载收件人地址
message.setSubject(emailTitle);// 加载标题
Multipart multipart = new MimeMultipart();// 向multipart对象中添加邮件的各个部分内容,包括文本内容和附件
BodyPart contentPart = new MimeBodyPart();
contentPart.setText(context);// 设置邮件的文本内容
multipart.addBodyPart(contentPart);
BodyPart messageBodyPart = new MimeBodyPart();// 添加附件
DataSource source = new FileDataSource(additionalPath);
messageBodyPart.setDataHandler(new DataHandler(source));// 添加附件的内容
sun.misc.BASE64Encoder enc = new sun.misc.BASE64Encoder();
messageBodyPart.setFileName("=?GBK?B?"+enc.encode(additionalName.getBytes())+"?=");
multipart.addBodyPart(messageBodyPart);
message.setContent(multipart);//将multipart对象放到message中
message.saveChanges();// 保存邮件
Transport transport = session.getTransport("smtp");// 发送邮件
transport.connect(emailHost, myEmailUser, myEmailPwd);// 连接服务器的邮箱
transport.sendMessage(message, message.getAllRecipients());// 把邮件发送出去
transport.close();
} catch (Exception e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
email email = new email();
email.send("smtp.qq.com",
"xxxxxxxxx@qq.com",
"E:\\text.txt",
"随便什么鬼",
"xxxxxxxxx@qq.com",
"xxxxxxxxxrqudbgie",//qq为开启smtp给的密钥,其它为密码
"测试邮件",
"我的最新测试邮件!!"
);
}
}
相关文章推荐
- android email 邮件转发 附件不能转发问题的解决
- 解决用Email发送HTML邮件显示乱码问题,并用大字符串类型:StringBuilder
- zabbix自动报警邮件正文变成附件问题解决
- 解决java mail发送TXT附件被直接显示在正文中的问题
- 解决java mail发送TXT附件被直接显示在正文中的问题
- 解决java mail发送TXT附件被直接显示在正文中的问题
- 使用 JavaMail 收发邮件,解决中文附件问题
- php发送email (邮件)若干问题总结(成功smtp案例见附件)
- Jira饼图上中文乱码,显示为“口”的解决办法,以及问题附件中文名时无法打开终极办法
- JAVAMAIL发送邮件正文是html格式并且显示图片还带有附件的邮件
- 用户登录域时间过久问题解决案例 或显示电脑登陆到那个dc
- EMOS SPF开启收不到信 及WEB收件箱不显示邮件列表等问题解决处理记录
- 饼状图的改进(解决零值和数值无限小的显示问题)
- [转]关于解决Jmail发送附件和html邮件的问题
- JavaMail、Commons Email发送邮件 出现结果后到的文件是Base64的问题的解决办法
- php的IMAP的应用实例(实现收发邮件、删除邮件、附件下载等功能,解决中文乱码问题)
- 关于解决Jmail发送附件和html邮件的问题
- php的IMAP的应用实例(实现收发邮件、删除邮件、附件下载等功能,解决中文乱码问题)
- ECSHOP发送邮件显示格林尼治时间问题的解决
- 解决MS Outlook 2007所收邮件显示为乱码的问题