多用途互联网邮件扩展MIMEMultipurpose Internet Mail Extensions)是一个互联网标准,它扩展了电子邮件标准,使其能够支持非ASCII字符、二进制格式附件等多种格式的邮件消息。

 

邮件编码:

quoted-printable

因为欧洲的一些文字和ASCII字符集中的某些字符有部分相同。如果邮件消息使用的是这些语言的话,于ASCII重叠的那些字符可以原样使用,ASCII字符集中不存在的字符采用形如“=??”的方法编码。这里“??”需要用将字符编码后的16进制数字来指定。采用quoted-printable编码的消息,长度不会变得太长,而且大部分都是ASCII中的字符,即使不通过解码也大致可以读懂消息的内容。

[编辑]base64

base64是一种将二进制的01序列转化成ASCII字符的编码方法。编码后的文本或者二进制消息,就可以运用SMTP等只支持ASCII字符的协议传送了。Base64一般被认为会平均增加33%的报文长度,而且,经过编码的消息对于人类来说是不可读的。

 

 

发送邮件:

 

  1. public static void main(String[] args) throws Exception {  
  2.         Properties props = new Properties();  
  3.         props.setProperty("mail.transport.protocol""smtp");  
  4.         props.setProperty("mail.smtp.auth""true");  
  5.         props.setProperty("mail.host""smtp.sina.cn");  
  6.         Session session = Session.getInstance(props, new Authenticator() {  
  7.             @Override 
  8.             protected PasswordAuthentication getPasswordAuthentication() {  
  9.                 return new PasswordAuthentication("tes""test");  
  10.             }  
  11.         });  
  12.         MimeMessage message = new MimeMessage(session);  
  13.         message.setFrom(new InternetAddress(MimeUtility.encodeText("徐伟") + " <test_zyy@sina.cn>"));  
  14.         message.setRecipients(RecipientType.TO,   
  15.                 InternetAddress.parse(MimeUtility.encodeText("扣扣") + " <test@qq.com>," + MimeUtility.encodeText("搜狐") + "  <test_zyy@sohu.com>"));  
  16.         message.setRecipient(RecipientType.CC,   
  17.                 new InternetAddress(MimeUtility.encodeText("酱油") + " <test_hy@sina.cn>"));  
  18.         message.setSubject("一封测试邮件");  
  19.         message.setSentDate(new Date());  
  20.         message.setReplyTo(InternetAddress.parse("Lily_wife@163.com"));  
  21.           
  22.         MimeMultipart msgMultipart = new MimeMultipart("mixed");  
  23.         MimeBodyPart contentPart = new MimeBodyPart();  
  24.         MimeBodyPart attachPart1 = new MimeBodyPart();  
  25.         MimeBodyPart attachPart2 = new MimeBodyPart();  
  26.           
  27.         msgMultipart.addBodyPart(contentPart);  
  28.         msgMultipart.addBodyPart(attachPart1);  
  29.         msgMultipart.addBodyPart(attachPart2);  
  30.           
  31.             MimeMultipart bodyMultipart = new MimeMultipart("related");  
  32.             MimeBodyPart htmlPart = new MimeBodyPart();  
  33.             MimeBodyPart imgPart = new MimeBodyPart();  
  34.               
  35.             bodyMultipart.addBodyPart(htmlPart);  
  36.             bodyMultipart.addBodyPart(imgPart);  
  37.               
  38.             htmlPart.setContent("<span style='color:red'>这仅是一封测试文件,亲们不要回复,谢谢!!!</span><br/><br/><img src='cid:test'/><br/><br/>Best Regards,<br/>Xuwei""text/html;charset=utf-8");  
  39.               
  40.             DataSource ds = new FileDataSource("F:\\mail resource\\img01.jpg");  
  41.             DataHandler handler = new DataHandler(ds);  
  42.             imgPart.setDataHandler(handler);  
  43.             imgPart.setContentID("<test>");  
  44.  
  45.         contentPart.setContent(bodyMultipart);    
  46.               
  47.         attachPart1.attachFile("F:\\mail resource\\file list.txt");  
  48.         attachPart1.setFileName(MimeUtility.encodeText("文本附件"));  
  49.         attachPart2.attachFile("F:\\mail resource\\img02.jpg");  
  50.         attachPart2.setFileName(MimeUtility.encodeText("图片附件"));  
  51.           
  52.         message.setContent(msgMultipart);  
  53.           
  54. //      FileOutputStream fos = new FileOutputStream("F:\\mail resource\\demo.eml");  
  55. //      message.writeTo(fos);  
  56. //      fos.close();  
  57.           
  58.         Transport.send(message);  
  59.     }