一年前做的一个小程序中,有过用到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("XXX@qq.com","test_title","test_content")){
//SysLog.loger("mail_ok");
}else{
//SysLog.loger("mail_not");
}
}
}