一年前做的一个小程序中,有过用到javaMail,当时也没多注意什么,能跑就可以,现在一段时间在搞一些收集,确实体会到好记性不如烂笔头,多在BLOG上写点东西,回头再来复习也不错,这次遇到问题是这样的,我在javaEE5的标准下跑javaMail始终有问题,莫名奇妙的,也找不出了所以然来,偶然看见http://wenming-101.iteye.com/blog/199457上面有关于javaMail的一些常见问题,一下子明白了,再在javaEE1.4下试试看确实没问题了,郁闷的半天。。。
代码如下:
import java.util.Properties; import javax.mail.BodyPart; import javax.mail.Message; import javax.mail.Multipart; 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; /** * JavaMailSendTxt.java * utils class * @author fanfq 2009-6-7 * * */ public class JavaMailSendTxt { public boolean sendEmail(String send_to,String mail_title,String mail_content,String mailAddr,String pwd){ //String mailCompany = mailAddr.substring(mailAddr.indexOf("@")+1,mailAddr.indexOf(".")); String smtp = "smtp."+mailAddr.substring(mailAddr.indexOf("@")+1); //SysLog.loger(send_to); //SysLog.loger(mail_title); //SysLog.loger(mail_content); //SysLog.loger(mailAddr); //SysLog.loger(pwd); //SysLog.loger(smtp); boolean result = false; try{ //mail_content = mail_content + "<p>您的密码是:<i><font color=red>"+password+"</font></i></p><p>----------------------------------------</p><p><font color=blue>fanfq.iteye.com</font></p> "; //建立邮件会话,也可用 //Properties props = System.getProperties(); Properties props=new Properties(); //建立邮件会话 props.put("mail.smtp.host",smtp); props.put("mail.smtp.auth","true"); Session s=Session.getInstance(props); s.setDebug(true); MimeMessage message=new MimeMessage(s); //给消息对象设置发件人/收件人/主题/发信时间 InternetAddress from=new InternetAddress(mailAddr); //发件人 message.setFrom(from); InternetAddress to=new InternetAddress(send_to); message.setRecipient(Message.RecipientType.TO,to); message.setSubject(mail_title); message.setSentDate(new java.util.Date()); //给消息对象设置内容 //新建一个存放信件内容的BodyPart对象 BodyPart mdp=new MimeBodyPart(); //给BodyPart对象设置内容和格式的编码方式 mdp.setContent(mail_content,"text/html;charset=gb2312"); //新建一个MimeMultipart对象用来存放BodyPart对象(事实上可以存放多个) Multipart mm=new MimeMultipart(); //将BodyPart加入到MimeMultipart对象中(可以加入多个BodyPart) mm.addBodyPart(mdp); //把mm作为消息对象的内容 message.setContent(mm); message.saveChanges(); Transport transport=s.getTransport("smtp"); //以smtp方式登录邮箱,第一个参数是发送邮件用的邮件服务器SMTP地址,第二个参数为用户名,第三个参数为密码 transport.connect(smtp,mailAddr,pwd); transport.sendMessage(message,message.getAllRecipients()); transport.close(); result = true; }catch(Exception e){ e.printStackTrace(); result = false; }finally{ return result; } } public boolean sendEmail(String send_to,String mail_title,String mail_content){ String mailAddr = "XXX"; String pwd = "XXX"; return sendEmail(send_to,mail_title,mail_content,mailAddr,pwd); } public static void main(String[] args){ if(new JavaMailSendTxt().sendEmail("[email protected]","test_title","test_content")){ //SysLog.loger("mail_ok"); }else{ //SysLog.loger("mail_not"); } } }