javaMail邮件发送
利用Sun公司提供的JavaMail API可以很方便的开发邮件发送程序。也许你已经可以利用它来发送一段简单的文本了,但想不想使你的程序像OUTLOOK一样也能发送附件呢?本文在简单介绍了JavaMail之后,详细讲解了一段完整的送信的JavaBean及一个十分轻巧的servlet。
(没有装载JavaMail API的读者,可以到此站点下载,并按照Readme.txt设置好ClassPath)
一、JavaMail中一些我们需要的类
1.Properties
JavaMail需要Properties来创建一个session对象,其属性值就是发送邮件的主机,如:
|
2.Session
所有的基于JavaMail的程序都至少需要一个或全部的对话目标。
|
3.MimeMessage
信息对象将把你所发送的邮件真实的反映出来。
|
4.Transport
邮件的发送是由Transport来完成的:
|
二、我们自己创建的可发送附件的类
|
下面是一个源码
package com;
import java.io.*;
import java.util.*;
import javax.mail.*;
import javax.mail.internet.*;
import javax.activation.*;
import javax.mail.Message;
import org.springframework.stereotype.Component;import com.util.SysGlobal;
@Component("sendmail")
public class SendMail { private static File file;
public static void main(String[] args) throws IOException{ SendMail sendmail=new SendMail();
String sendEmail = "chenlichenli520@126.com";
String sendPwd = "******";
String host = "smtp.126.com";
FileReader reader=new FileReader("chen.txt");//此处是一个文件名,发送邮件的信息全部放在此txt文件中
BufferedReader buf=new BufferedReader(reader);
String context="";
String row="";
while((row=buf.readLine())!=null)
{
context=context+row+"\n<br/>";
}
context =SendMail.removeFFFE(context);
context=context.replaceAll("\\&\\{email\\}","jimmychenli@126.com");
context=context.replaceAll("\\&\\{info\\}","ss");
System.out.println(context);
String info=context;
if(sendmail.send(sendEmail, "393758826@qq.com",sendPwd,host,info)){
System.out.println("邮件发送成功"); }
} private static String removeFFFE(String s) {
for(int i=0; i<2; i++) {
if(s.length()>1) {
char c = s.charAt(0);
if(c==0xfffe || c==0xfeff)
s = s.substring(1);
}
}
return s;
}
public static boolean send(String from,String to,String password,String host,String info){ Properties props=new Properties();
// 与服务器建立Session的参数设置
props.put("mail.smtp.host", host);// host服务器。
props.put("mail.smtp.auth", "true");//服务自动验证
Session mailSession=Session.getDefaultInstance(props,null);//与服务器建立连接
try{
//Transport用来发送邮件传输协议
Transport trans=mailSession.getTransport("smtp");
trans.connect(host,from,password);
//创建邮件发送信息
Message newMessage=new MimeMessage(mailSession);
newMessage.setSubject("温馨提示");//设计发送邮件的主题
newMessage.setFrom(new InternetAddress(from));//设定所发人的邮箱;
BodyPart fileBodyPart=new MimeBodyPart();
/* FileDataSource fds=new FileDataSource(file);
fileBodyPart.setDataHandler(new DataHandler(fds));*/
fileBodyPart.setHeader("text/html", "utf-8");
Address addressTo[] = { new InternetAddress(to)};
newMessage.setRecipients(Message.RecipientType.TO, addressTo);
fileBodyPart.setContent(info,"text/html;charset=utf-8");//设定可以发送HTML格式的邮件,最终将显示HTML MimeMultipart multi = new MimeMultipart();
multi.addBodyPart(fileBodyPart);
newMessage.setContent(multi);
newMessage.saveChanges();
trans.sendMessage(newMessage, newMessage.getRecipients(Message.RecipientType.TO));
trans.close();
return true;
}catch(Exception ex){
ex.printStackTrace();
return false;
}
}}