java 发送邮件带附件,正文带图片
import java.io.UnsupportedEncodingException;
import java.net.MalformedURLException;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Properties;
import javax.activation.DataHandler;
import javax.activation.DataSource;
import javax.activation.FileDataSource;
import javax.mail.Authenticator;
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.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;
import javax.mail.internet.MimeUtility;
public class SendEmail
{
    //收件人邮箱地址
    private String[] to; 
    //抄送人邮箱地址
    private String[] copyto; 
    //发件人邮箱地址
    private String from ="xxx"; 
    //SMTP服务器地址 如:smtp.163.com
    private String smtpServer = "xxx"; 
    //登录SMTP服务器的用户名(不需要后面带@xxx.com)
    private String username ="";
    //登录SMTP服务器的密码 (服务密码,不是登录密码)
    private String password ="xxx";
    //邮件主题
    private String subject; 
    //邮件正文
    private String content; 
    //记录所有附件文件的集合
    List<String> attachments = new ArrayList<String>();
    // 发件人昵称 
    private String senderNick = "xxx";   
    //无参数的构造器
    public SendEmail()
    {
    }
    
    public SendEmail(String[] to , String from , String smtpServer 
        , String username , String password 
        , String subject , String content,String senderNick,String[] copyto)
    { 
        this.to = to;
        this.from = from;
        this.smtpServer = smtpServer;
        this.username = username;
        this.password = password;
        this.subject = subject;
        this.content = content;
        this.senderNick = senderNick;
        this.copyto = copyto;
    }
    //to属性的setter方法
    public void setTo(String[] to)
    {
        this.to = to;
    }
    //to属性的setter方法
    public void setCopyto(String[] copyto)
    {
        this.copyto = copyto;
    }
    //from属性的setter方法
    public void setFrom(String from)
    {
        this.from = from;
    }
    //smtpServer属性的setter方法
    public void setSmtpServer(String smtpServer)
    {
        this.smtpServer = smtpServer;
    }
    //username属性的setter方法
    public void setUsername(String username)
    {
        this.username = username;
    }
    //password属性的setter方法
    public void setPassword(String password)
    {
        this.password = password;
    }
    //subject属性的setter方法
    public void setSubject(String subject)
    {
        this.subject = subject;
    }
    //content属性的setter方法
    public void setContent(String content)
    {
        this.content = content;
    }
    
    public void setSenderNick(String senderNick)
    {
        this.senderNick = senderNick;
    }
    
    //把邮件主题转换为中文
    public String transferChinese(String strText)
    {
        try
        {
            strText = MimeUtility.encodeText(new String(strText.getBytes()  , "UTF-8"), "UTF-8", null);
        }
        catch(Exception e)
        {
            e.printStackTrace();
        }
        return strText;
    }
    //增加附件,将附件文件名添加的List集合中
    public void attachfile(String fname)
    {
        attachments.add(fname);
    }
    //发送邮件
    public boolean send(String path1,String path2) throws MalformedURLException
    {
        //创建邮件Session所需的Properties对象
        Properties props = new Properties();
        props.put("mail.smtp.host" , smtpServer);
        props.put("mail.smtp.auth" , "true");
        props.put("mail.smtp.debug" , "true");
        //创建Session对象
        Session session = Session.getDefaultInstance(props
            //以匿名内部类的形式创建登录服务器的认证对象
            , new Authenticator()
            {
                public PasswordAuthentication getPasswordAuthentication()
                {
                    return new PasswordAuthentication(username, password); 
                }
            });
        try
        {
            //构造MimeMessage并设置相关属性值
            MimeMessage msg = new MimeMessage(session);
            
            String nick = "";
            try {
				nick = javax.mail.internet.MimeUtility.encodeText(senderNick);
			} catch (UnsupportedEncodingException e1) {
				e1.printStackTrace();
			}
            //设置发件人
            try {
				msg.setFrom(new InternetAddress(from,nick));
			} catch (UnsupportedEncodingException e1) {
				e1.printStackTrace();
			}
            //设置收件人
            if (to != null && to.length > 0) {
            	String  toListStr = getMailList(to);
            	  msg.setRecipients(Message.RecipientType.TO, InternetAddress.parse(toListStr));
            }
            
            //设置抄送人
            if (copyto != null && copyto.length > 0) {
            	String  copytoListStr = getMailList(copyto);
            	  msg.setRecipients(Message.RecipientType.CC, InternetAddress.parse(copytoListStr));
            }
			//InternetAddress[] addresses = {new InternetAddress(toListStr)};
            //msg.setRecipients(Message.RecipientType.TO , addresses);
            //设置邮件主题
            subject = transferChinese(subject);
            msg.setSubject(subject);    
            //构造Multipart
            Multipart mp = new MimeMultipart();
            //向Multipart添加正文
            MimeBodyPart mbpContent = new MimeBodyPart();
            mbpContent.setContent(content, "text/html;charset=UTF-8");
            //将BodyPart添加到MultiPart中
            mp.addBodyPart(mbpContent);
            
            //path1="D:\\xxx.png";
            mbpContent = new MimeBodyPart();
			DataSource fd = new FileDataSource(path1);
			mbpContent.setDataHandler(new DataHandler(fd));
			mbpContent.setHeader("Content-ID", "<image1>");
			mp.addBodyPart(mbpContent);
			
			//path2="D:\\xxx.png";
            mbpContent = new MimeBodyPart();
			DataSource fd2 = new FileDataSource(path2);
			mbpContent.setDataHandler(new DataHandler(fd2));
			mbpContent.setHeader("Content-ID", "<image2>");
			mp.addBodyPart(mbpContent);
            
            //向Multipart添加附件
            //遍历附件列表,将所有文件添加到邮件消息里
            for(String efile : attachments)
            {
                MimeBodyPart mbpFile = new MimeBodyPart();
                //以文件名创建FileDataSource对象
                FileDataSource fds = new FileDataSource(efile);
                //处理附件
                mbpFile.setDataHandler(new DataHandler(fds));
                try {
					mbpFile.setFileName(MimeUtility.encodeText(fds.getName()));
				} catch (UnsupportedEncodingException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
                //将BodyPart添加到MultiPart中
                mp.addBodyPart(mbpFile);
            }
            
            //清空附件列表
            attachments.clear();
            //向Multipart添加MimeMessage
            msg.setContent(mp);
            //设置发送日期
            msg.setSentDate(new Date());
            //发送邮件
            Transport.send(msg);
        }
        catch (MessagingException mex)
        {
            mex.printStackTrace();
            return false;
        }
        return true;
    }
    
    
    //多用户发送用,号格开
    public String getMailList(String[] mailArray) {
        StringBuffer toList = new StringBuffer();
        int length = mailArray.length;
        if (mailArray != null && length < 2) {
            toList.append(mailArray[0]);
        } else {
            for (int i = 0; i < length; i++) {
                toList.append(mailArray[i]);
                if (i != (length - 1)) {
                    toList.append(",");
                }
            }
        }
        return toList.toString();
    }
    
    
    
    public static void main(String[] args)
    {
    	
		SendEmail sendMail = new SendEmail();
        //设置收件人的地址多人用逗号隔开
        String[] to = {"xxxx@xx.com", "xxx@xxxx.com"};
        sendMail.setTo(to);
        //设置抄送人人的地址多人用逗号隔开
        String[] copyto = {"xxxx@xx.com"};
        sendMail.setCopyto(copyto);
        
        //设置标题
        sendMail.setSubject("测试邮件标题!");
        //设置内容
        StringBuffer sb = new StringBuffer();
      		sb.append("<body>" );
      		sb.append("<p style='text-align:left'>hi,all</p>")
      		.append("<p style='text-align:left;text-indent:2em;'>这里是测试数据!</p>");
              sendMail.setContent(sb.toString()); 
              //附件
              sendMail.attachfile("D://xxx.xls");
              try {
//可以在这里设置你要发送的图片路径
				if (sendMail.send(null,null))
				  {
				      System.out.println("---邮件发送成功---");
				  }
			} catch (MalformedURLException e) {
				e.printStackTrace();
			}
    	
    }
}
 
                    
                     
                    
                 
                    
                
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号