JavaMail入门-简单邮件例子

 这是一个发送邮件的简单例子,可以上传附件

 SimpleMail类:

package com.zsy.sun;
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;

import javax.activation.DataHandler;
import javax.activation.FileDataSource;
import javax.mail.Message;
import javax.mail.Multipart;
import javax.mail.Part;
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;


/**
 * 通过JavaMail发送一封简单的邮件,以及增加附件连接
 * @author zsy
 * @date 2015年1月19日 下午3:41:48
 */

public class SimpleMail {
	//主机
    private String host = "";
    private String user = "";
    private String password = "";
    private static Properties props = new Properties();
    public String attachmentPath = "C:/Users/Administrator/Desktop/活动1.png";
    
    public static void main(String[] args) {
        SimpleMail sm = new SimpleMail();
        sm.setHost("smtp.163.com"); // 指定要使用的邮件服务器
        sm.setAccount("[email protected]", "**********"); // 指定帐号和密码
        sm.send("[email protected]", "[email protected]", "标题", "HelloWold!");
    }
    
    
    public void setHost(String host) {
        this.host = host;
    }
    
    
    public void setAccount(String user, String password) {
        this.user = user;
        this.password = password;
    }
    
    /**
     * 
     * @param from		发件人地址
     * @param to		收件人地址
     * @param subject	邮件主题
     * @param content	邮件内容
     */
    public void send(String from, String to, String subject, String content) {
        props.put("mail.smtp.host", "smtp.163.com");
        props.put("mail.smtp.auth", true);
        try {
        	//提供配置以及初始化JavaMail,不与邮件服务器交互
        	Session mailSession = Session.getDefaultInstance(props);
        	
        	//创建需要传递的消息
            Message message = new MimeMessage(mailSession);
            message.setFrom(new InternetAddress(from)); // 发件人
            message.addRecipient(Message.RecipientType.TO, new InternetAddress(to)); // 收件人
            message.setSubject(subject); // 邮件主题
            //message.setText(content);  邮件内容
            
            /* 
             * 附件上传 
             */  
            MimeBodyPart mbp1 = new MimeBodyPart();  
            FileDataSource fds2 = new FileDataSource(attachmentPath);  
            DataHandler dh2 = new DataHandler(fds2);  
            mbp1.setDataHandler(dh2);  
            mbp1.setFileName(MimeUtility.encodeText(fds2.getName()));  
            
            MimeBodyPart mbp2 = new MimeBodyPart();
            mbp2.setContent(content.toString(), "text/html;charset=gb2312");
            
            //增加邮件内容
            Multipart mp = new MimeMultipart();
            mp.addBodyPart(mbp1); 
            mp.addBodyPart(mbp2);
            message.setContent(mp);  
            
            message.saveChanges();
            /*
             * Session根据协议类型(stmp、pop3等)和邮件操作方式(传输和存储)这两个信息就可以定位到一个实例类上。
             * 比如,指定stmp协议和transport类型后,
             * Session就会使用com.sun.mail.smtp.SMTPTransport实现类创建一个Transport实例,
             * 而指定pop3协议和store类型时,则会使用com.sun.mail.pop3.POP3Store实例类创建一个Store实例。
             */
            
            Transport transport = mailSession.getTransport("smtp");
            transport.connect(host, user, password);
            transport.sendMessage(message, message.getAllRecipients());
            transport.close();
        } catch(Exception e) {
            System.out.println(e);
        }
    }
    
    /*private static Properties createProperties(){
    	
    	InputStream is = null;
    	try {
			is = SimpleMail.class.getResourceAsStream("/com/zsy/config/mail.properties");
			props.load(is);
			is.close();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
    	return props;
    }*/
    
}

更详细的参数以及相关内容,请参考【zapldy】大大的文章,JavaMail发送和接收邮件:http://blog.csdn.net/zapldy/article/details/3971579

猜你喜欢

转载自holyland.iteye.com/blog/2177283