IT程序员开发必备-各类资源下载清单,史上最全IT资源,个人收藏总结!
解决邮件附件乱码问题
//为附件1关联数据源 DataSource ds1 = new FileDataSource("C:\\Documents and Settings\\Administrator\\桌面\\river.jpg"); DataHandler dh1 = new DataHandler(ds1); attch1.setDataHandler(dh1); //文件名必须要经过编码,否则附件名将乱码 attch1.setFileName(MimeUtility.encodeText("故乡的河.jpg"));
设置邮件回复人
//设置发送人 msg.setFrom(new InternetAddress(MimeUtility.encodeText("肖华")+"<xh216319@163.com>")); //设置答复人 msg.setReplyTo(InternetAddress.parse("itstar1965@sina.com")); //设置收件人,并以友好名称显示 msg.setRecipients(RecipientType.TO,InternetAddress.parse( MimeUtility.encodeText("ITSTAR")+"<itstar1965@sina.com>,"+MimeUtility.encodeText("肖华")+"<xh216319@163.com>") );
设置邮件发送人收件人姓名
//设置发送人 msg.setFrom(new InternetAddress(MimeUtility.encodeText("肖华")+"<xh216319@163.com>")); //设置答复人 msg.setReplyTo(InternetAddress.parse("itstar1965@sina.com")); //设置收件人,并以友好名称显示 msg.setRecipients(RecipientType.TO,InternetAddress.parse( MimeUtility.encodeText("ITSTAR")+"<itstar1965@sina.com>,"+MimeUtility.encodeText("肖华")+"<xh216319@163.com>") );
解决上述问题的完整程序
package edu.mail.util; import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStream; import java.util.Properties; import javax.activation.DataHandler; import javax.activation.DataSource; import javax.activation.FileDataSource; import javax.mail.Message; import javax.mail.MessagingException; import javax.mail.Session; import javax.mail.Message.RecipientType; 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 SendMultipartMessageDemo3 { public static void main(String[] args) throws MessagingException, IOException { Properties props = new Properties(); Session session = Session.getInstance(props); session.setDebug(true); Message msg = new MimeMessage(session); msg.setSubject("the first multipart javaMail"); //设置发送人 msg.setFrom(new InternetAddress(MimeUtility.encodeText("肖华")+"<xh216319@163.com>")); //设置答复人 msg.setReplyTo(InternetAddress.parse("itstar1965@sina.com")); //设置收件人,并以友好名称显示 msg.setRecipients(RecipientType.TO,InternetAddress.parse( MimeUtility.encodeText("ITSTAR")+"<itstar1965@sina.com>,"+MimeUtility.encodeText("肖华")+"<xh216319@163.com>") ); MimeMultipart msgMultipart = new MimeMultipart("mixed"); msg.setContent(msgMultipart); //为message对象创建content组件和attch组件 MimeBodyPart content = new MimeBodyPart(); MimeBodyPart attch1 = new MimeBodyPart(); MimeBodyPart attch2 = new MimeBodyPart(); //将两个附件对象和正文对象添加到msgMultipart对象 msgMultipart.addBodyPart(content); msgMultipart.addBodyPart(attch1); msgMultipart.addBodyPart(attch2); //为附件1关联数据源 DataSource ds1 = new FileDataSource("C:\\Documents and Settings\\Administrator\\桌面\\river.jpg"); DataHandler dh1 = new DataHandler(ds1); attch1.setDataHandler(dh1); //文件名必须要经过编码,否则附件名将乱码 attch1.setFileName(MimeUtility.encodeText("故乡的河.jpg")); //为附件2关联数据源 DataSource ds2 = new FileDataSource("C:\\Documents and Settings\\Administrator\\桌面\\mail.bat"); DataHandler dh2 = new DataHandler(ds2); attch2.setDataHandler(dh2); attch2.setFileName("mail.bat"); //因为正文content也是一个Multipart对象,其组件是related关系,所以content.setContent(contentMultipart) MimeMultipart contentMultipart = new MimeMultipart("related"); content.setContent(contentMultipart); //为contentMultipart创建htmlPart组件和gifPart组件 MimeBodyPart htmlPart = new MimeBodyPart(); MimeBodyPart gifPart = new MimeBodyPart(); //将htmlPart和gifPart对象添加到contentMultipart对象 contentMultipart.addBodyPart(htmlPart); contentMultipart.addBodyPart(gifPart); DataSource ds3 = new FileDataSource("C:\\Documents and Settings\\Administrator\\桌面\\2012_03130103.JPG"); DataHandler dh3 = new DataHandler(ds3); gifPart.setDataHandler(dh3); gifPart.setFileName("itstar.gif"); gifPart.setHeader("Content-Location", "http://www.csdn.net/itstar.gif"); //这里src="http://www.csdn.net/itstar.gif"实际上指向的是其关联的gifPart对象 htmlPart.setContent("这是我的第一个复合结构的JavaMail,我的照片<img height=100px,width=80px src='http://www.csdn.net/itstar.gif'/>","text/html;charset=utf-8"); //保存message所做的改变 msg.saveChanges(); OutputStream ops = new FileOutputStream("C:\\Documents and Settings\\Administrator\\桌面\\SendMultipartMessageDemo3.eml"); //将message对象写入文件流中 msg.writeTo(ops); ops.close(); } }
发送现有的eml文件
package edu.mail.util; import java.io.FileInputStream; import java.util.Date; import java.util.Properties; import javax.mail.Authenticator; import javax.mail.Message; import javax.mail.PasswordAuthentication; import javax.mail.Session; import javax.mail.Transport; import javax.mail.Message.RecipientType; import javax.mail.internet.InternetAddress; import javax.mail.internet.MimeMessage; public class SendEmlFileDemo4 { public static void main(String[] args) throws Exception { //创建包含邮件服务器的网络连接信息的Session对象。 Properties props = new Properties(); props.setProperty("mail.transport.protocol", "smtp"); props.setProperty("mail.host", "smtp.163.com"); props.setProperty("mail.smtp.auth", "true"); /** * getInstance()和getDefaultInstance()方法的区别: * getInstance()每次调用都会创建一个新Session对象并返回 * getDefaultInstance()第一次调用时,会返回一个session对象,并将该session对象设置为缺省值,当第二次调用该方法时,则会返回该缺省session对象 **/ //因为Authenticator类为抽象类,所以只能以匿名内部类的形式new一个Authenticator的子类对象,并重写其getPasswordAuthentication()方法 Session session = Session.getInstance(props, new Authenticator() { protected PasswordAuthentication getPasswordAuthentication(){ return new PasswordAuthentication("xh216319","xiaoxiao"); } } ); //设置Debug的方式打印执行过程 session.setDebug(true); //创建代表邮件内容的Message对象。 Message msg = new MimeMessage(session,new FileInputStream("C:\\Documents and Settings\\Administrator\\桌面\\SendMultipartMessageDemo3.eml")); Transport.send(msg); } }