- 疯狂的IT人站长整理的:利用Java发送邮件(含附件)的例子:
- 1、邮件发送的配置propertity文件内容如下:(utils.properties文件放在src下面)
- emailsmtp=smtp.qq.com
- emailaddress=459104018@qq.com
- emailpass=******
- 2、读取配置文件的类文件(ReadPropertity.java)
- import java.io.IOException;
- import java.util.Properties;
- public class ReadPropertity {
- static Properties props = new Properties();
- static {
- try {
- props.load(ReadPropertity.class.getClassLoader().getResourceAsStream(
- "utils.properties"));
- } catch (IOException e1) {
- e1.printStackTrace();
- }
- }
- public static String getProperty(String key) {
- return props.getProperty(key);
- }
- }
- 3、邮件处理类(EmailHandle.java)
- import java.util.Iterator;
- import java.util.LinkedList;
- import java.util.List;
- import java.util.Properties;
- import javax.activation.DataHandler;
- import javax.activation.FileDataSource;
- import javax.mail.BodyPart;
- 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;
- import javax.mail.internet.MimeUtility;
- /**
- * 本程序用java来实现Email的发送, 所用到的协议为:smtp
- * <p>Company: 疯狂的IT人</p>
- * time:2013-04-05
- * @author www.crazyiter.com
- * @date
- * @version 1.0
- */
- public class EmailHandle {
- private MimeMessage mimeMsg; //邮件对象
- private Session session; //发送邮件的Session会话
- private Properties props;//邮件发送时的一些配置信息的一个属性对象
- private String sendUserName; //发件人的用户名
- private String sendUserPass; //发件人密码
- private Multipart mp;//附件添加的组件
- private List files = new LinkedList();//存放附件文件
- public EmailHandle(String smtp) {
- sendUserName = "";
- sendUserPass = "";
- setSmtpHost(smtp);// 设置邮件服务器
- createMimeMessage(); // 创建邮件
- }
- public void setSmtpHost(String hostName) {
- if (props == null)
- props = System.getProperties();
- props.put("mail.smtp.host", hostName);
- }
- public boolean createMimeMessage(){
- try {
- // 用props对象来创建并初始化session对象
- session = Session.getDefaultInstance(props, null);
- } catch (Exception e) {
- System.err.println("获取邮件会话对象时发生错误!" + e);
- return false;
- }
- try {
- mimeMsg = new MimeMessage(session); // 用session对象来创建并初始化邮件对象
- mp = new MimeMultipart();// 生成附件组件的实例
- } catch (Exception e) {
- return false;
- }
- return true;
- }
- /**
- * 设置SMTP的身份认证
- */
- public void setNeedAuth(boolean need) {
- if (props == null)
- props = System.getProperties();
- if (need)
- props.put("mail.smtp.auth", "true");
- else
- props.put("mail.smtp.auth", "false");
- }
- /**
- * 进行用户身份验证时,设置用户名和密码
- */
- public void setNamePass(String name, String pass) {
- sendUserName = name;
- sendUserPass = pass;
- }
- /**
- * 设置邮件主题
- * @param mailSubject
- * @return
- */
- public boolean setSubject(String mailSubject) {
- try {
- mimeMsg.setSubject(mailSubject);
- } catch (Exception e) {
- return false;
- }
- return true;
- }
- /**
- * 设置邮件内容,并设置其为文本格式或html文件格式,编码方式为UTF-8
- * @param mailBody
- * @return
- */
- public boolean setBody(String mailBody) {
- try {
- BodyPart bp = new MimeBodyPart();
- bp.setContent("<meta http-equiv=Content-Type content=text/html; charset=UTF-8>"+ mailBody, "text/html;charset=UTF-8");
- // 在组件上添加邮件文本
- mp.addBodyPart(bp);
- } catch (Exception e) {
- System.err.println("设置邮件正文时发生错误!" + e);
- return false;
- }
- return true;
- }
- /**
- * 增加发送附件
- * @param filename
- * 邮件附件的地址,只能是本机地址而不能是网络地址,否则抛出异常
- * @return
- */
- public boolean addFileAffix(String filename) {
- try {
- BodyPart bp = new MimeBodyPart();
- FileDataSource fileds = new FileDataSource(filename);
- bp.setDataHandler(new DataHandler(fileds));
- bp.setFileName(MimeUtility.encodeText(fileds.getName(),"utf-8",null)); // 解决附件名称乱码
- mp.addBodyPart(bp);// 添加附件
- files.add(fileds);
- } catch (Exception e) {
- System.err.println("增加邮件附件:" + filename + "发生错误!" + e);
- return false;
- }
- return true;
- }
- public boolean delFileAffix(){
- try {
- FileDataSource fileds = null;
- for(Iterator it = files.iterator() ;it.hasNext();) {
- fileds = (FileDataSource)it.next();
- if(fileds != null && fileds.getFile() != null){
- fileds.getFile().delete();
- }
- }
- }catch (Exception e) {
- return false;
- }
- return true;
- }
- /**
- * 设置发件人地址
- * @param from
- * 发件人地址
- * @return
- */
- public boolean setFrom(String from) {
- try {
- mimeMsg.setFrom(new InternetAddress(from));
- } catch (Exception e) {
- return false;
- }
- return true;
- }
- /**
- * 设置收件人地址
- * @param to收件人的地址
- * @return
- */
- public boolean setTo(String to) {
- if (to == null)
- return false;
- try {
- mimeMsg.setRecipients(Message.RecipientType.TO,InternetAddress.parse(to));
- } catch (Exception e) {
- return false;
- }
- return true;
- }
- /**
- * 发送附件
- * @param copyto
- * @return
- */
- public boolean setCopyTo(String copyto) {
- if (copyto == null)
- return false;
- try {
- mimeMsg.setRecipients(javax.mail.Message.RecipientType.CC,InternetAddress.parse(copyto));
- } catch (Exception e) {
- return false;
- }
- return true;
- }
- /**
- * 发送邮件
- * @return
- */
- public boolean sendEmail() throws Exception{
- mimeMsg.setContent(mp);
- mimeMsg.saveChanges();
- System.out.println("正在发送邮件....");
- Session mailSession = Session.getInstance(props, null);
- Transport transport = mailSession.getTransport("smtp");
- // 连接邮件服务器并进行身份验证
- transport.connect((String) props.get("mail.smtp.host"), sendUserName,sendUserPass);
- // 发送邮件
- transport.sendMessage(mimeMsg, mimeMsg.getRecipients(Message.RecipientType.TO));
- System.out.println("发送邮件成功!");
- transport.close();
- return true;
- }
- }
- 4、邮件发送的类文件(SendEmail.java)
- /**
- * 发送邮件测试
- * <p>Company: 疯狂的IT人</p>
- * time:2013-04-05
- * @author www.crazyiter.com
- * @date
- * @version 1.0
- */
- public class SendEmail {
- public SendEmail() {
- }
- /***以后需要两个参数:接收方地址 、 内容***/
- public static void send(String subject, String toaddress,String content)throws Exception {
- String hostName = ReadPropertity.getProperty("emailsmtp");
- String fromAddress = ReadPropertity.getProperty("emailaddress");
- String fromAPass = ReadPropertity.getProperty("emailpass");
- EmailHandle emailHandle = new EmailHandle(hostName);
- emailHandle.setFrom(fromAddress);
- emailHandle.setNeedAuth(true);
- emailHandle.setSubject(subject);
- emailHandle.setBody(content);
- emailHandle.setTo(toaddress);
- emailHandle.setFrom(fromAddress);
- emailHandle.addFileAffix("D:/myself/help/txt/java环境变量.txt");// 附件文件路径
- emailHandle.setNamePass(fromAddress, fromAPass);
- emailHandle.sendEmail();
- }
- public static void main(String[] args) {
- try {
- SendEmail.send("带附件的邮件测试","459104018@qq.com","测试内容<a href='http://www.crazyiter.com'>疯狂的IT人</a>");
- } catch (Exception e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- }
- }
- 5、发送邮件需要的jar包:
- activation.jar
- mail-plugin.jar
- mail.jar
- //该片段来自于http://www.codesnippet.cn/detail/140720149982.html
来源: http://www.codesnippet.cn/detail/140720149982.html