现在的位置: 首页 > 综合 > 正文

java mail发送复杂邮件代码(包括附件,html消息,纯文本消息)

2013年05月26日 ⁄ 综合 ⁄ 共 5230字 ⁄ 字号 评论关闭
import java.io.File;
import java.util.Date;
import java.util.Properties;

import javax.activation.DataHandler;
import javax.activation.DataSource;
import javax.activation.FileDataSource;
import javax.mail.Authenticator;
import javax.mail.BodyPart;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Multipart;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.AddressException;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;

/**
 * java mail 发送复杂邮件,包括两个附件,html消息,html中嵌入两张图片
 * 还包括发送alternative邮件的源码.
 * 
@author zhangle
 *
 
*/

public class SendMixedMail {
    
//以下属性根据自己情况设置.
    private static String protocol="smtp";
    
private static String from="xxxx@163.com";
    
private static String to="xxxx@163.com";
    
private static String body="<html><body><a href='http://www.csdn.net'>I love you! csdn </a><img src='cid:img1'/><img src='cid:img2'/></body></html>";
    
private static String subject="mail test";
    
private static String server="smtp.163.com";
    
private static String username="your_name";//from mail name
    
private static String password="your_password";//from mail password
    
    
public static void main(String[] args) throws Exception, MessagingException {
        Properties prop
=new Properties();
        prop.setProperty(
"mail.transport.protocol",protocol);
        prop.setProperty(
"mail.smtp.auth","true");
        
        Session session
=Session.getInstance(prop,new Authenticator(){//用户连接认证
            public PasswordAuthentication getPasswordAuthentication() {
                
return new PasswordAuthentication(username,password);
            }

        }
);
        session.setDebug(
true);//开启调试
        
        MimeMessage message
=new MimeMessage(session);
        message.setFrom(
new InternetAddress(from));
        message.setRecipients(Message.RecipientType.TO,InternetAddress.parse(to));
        message.setSubject(subject);
        message.setSentDate(
new Date());
        
//message.setText(body);//发送纯文本消息
        
//message.setContent(getAlternativeMultipart());//发送alternative邮件
        message.setContent(getMultipart());//发送复杂文本消息
        message.saveChanges();//保存消息
        
        Transport trans
=session.getTransport();
        trans.connect(server,username,password);
        trans.sendMessage(message,message.getRecipients(Message.RecipientType.TO));
//发送
        trans.close();
    }

    
/**
     * 获得复杂邮件Multipart对象
     * 
@return
     * 
@throws MessagingException
     
*/

    
private static Multipart getMultipart() throws MessagingException {
        
        Multipart multi
=new MimeMultipart("mixed");//混合MIME消息
        
        multi.addBodyPart(createContent());
        multi.addBodyPart(createAttachment(
new File("D:/test1.exe")));//嵌入附件
        multi.addBodyPart(createAttachment(new File("D:/test2.jpg")));
        
        
return multi;
        
    }

    
/**
     * 创建正文
     * 
@return
     * 
@throws MessagingException
     
*/

    
private static BodyPart createContent() throws MessagingException {
        BodyPart content
=new MimeBodyPart();
        Multipart relate
=new MimeMultipart("related");//组合MIME消息

        relate.addBodyPart(createHtmlBody());
        relate.addBodyPart(createImagePart(
new File("D:/image1.jpg"), "img1"));//嵌入图片
        relate.addBodyPart(createImagePart(new File("D:/image2.jpg"), "img2"));
        
        content.setContent(relate);
        
return content;
    }

    
    
/**
     * 创建图片
     * 
@param file
     * 
@param name
     * 
@return
     * 
@throws MessagingException
     
*/

    
private static BodyPart createImagePart(File file,String name) throws MessagingException {
        MimeBodyPart image
=new MimeBodyPart();
        
        DataSource ds
=new FileDataSource(file);
        image.setDataHandler(
new DataHandler(ds));
        image.setFileName(name);
        image.setContentID(name);
        
        
return image;
    }

    
/**
     * 创建html消息
     * 
@return
     * 
@throws MessagingException
     
*/

    
private static BodyPart createHtmlBody() throws MessagingException {
        BodyPart html
=new MimeBodyPart();
        html.setContent(body, 
"text/html;charset=gbk");
        
return html;
    }

    
/**
     * 创建附件
     * 
@param file
     * 
@return
     * 
@throws MessagingException
     
*/

    
private static BodyPart createAttachment(File file) throws MessagingException {
        BodyPart attach
=new MimeBodyPart();
        DataSource ds
=new FileDataSource(file);

        attach.setDataHandler(
new DataHandler(ds));
        attach.setFileName(ds.getName());

        
return attach;
    }

    
/**
     * 获取alternative邮件
     * 
@return
     * 
@throws MessagingException
     
*/

    
private static Multipart getAlternativeMultipart() throws MessagingException {

        Multipart alternative
=new MimeMultipart("alternative");//二选一消息
        
        BodyPart text
=new MimeBodyPart();
        text.setContent(
"请浏览HTML""text/plain;charset=gbk");
        alternative.addBodyPart(text);
        
        BodyPart html
=new MimeBodyPart();
        html.setContent(body, 
"text/html;charset=gbk");
        alternative.addBodyPart(html);

        
return alternative;
    }

}

 

抱歉!评论已关闭.