//Modified by zealvampire 07-4-4,排版
JavaMail这个封装用起来也算方便,但如果是做界面的时候会发觉发送的时候你比较难跟踪它的过程,是在登陆验证密码还是正在发送;虽然可以设置session.setDebug(true)并且把输出流导向到UI界面,但是新版本的封装会把附件所有内容都打出来。。。建议要加点回调函数。
import
java.io.File;
import
java.io.PrintStream;
import
java.util.
*
;
import
javax.activation.DataHandler;
import
javax.activation.FileDataSource;
import
javax.mail.
*
;
import
javax.mail.event.TransportEvent;
import
javax.mail.event.TransportListener;
import
javax.mail.internet.
*
;
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
public
class
sendMails
implements
TransportListener
![](https://i-blog.csdnimg.cn/blog_migrate/a41954a27d6ad96fa2c2cf816e677448.gif)
...
{
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
public sendMails()
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
authFlag = false;
mimeType = "text/html";
accessories = new ArrayList();
}
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
public void setUser(String user)
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
this.user = user;
}
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
public void setPassword(String password)
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
this.password = password;
}
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
public void setFromAddress(String fromAddress)
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
this.fromAddress = fromAddress;
}
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
public void setSmtpServerDns(String smtpServerDns)
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
this.smtpServerDns = smtpServerDns;
}
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
public void setAuthFlag(boolean authFlag)
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
this.authFlag = authFlag;
}
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
public void setReceiver(String receiver[])
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
this.receiver = receiver;
}
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
public void setTitle(String title)
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
this.title = title;
}
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
public void setContent(String content)
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
this.content = content;
}
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
public void setAccessories(ArrayList accessories)
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
this.accessories = accessories;
}
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
public void setMimeType(String mimeType)
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
this.mimeType = mimeType;
}
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
public void initSession()
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
Properties p = new Properties();
p.put("mail.host", smtpServerDns);
p.put("mail.smtp.auth", String.valueOf(authFlag));
MailAuthenticator author = new MailAuthenticator(user, password);
session = Session.getInstance(p, author);
session.setDebug(true);
}
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
public void initMimeMessage()
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
if(session == null)
initSession();
mimeMesg = new MimeMessage(session);
try
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
mimeMesg.setFrom(new InternetAddress(fromAddress));
InternetAddress toAddress[] = new InternetAddress[receiver.length];
for(int i = 0; i < receiver.length; i++)
toAddress[i] = new InternetAddress(receiver[i]);
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
mimeMesg.addRecipients(javax.mail.Message.RecipientType.TO, toAddress);
mimeMesg.setSubject(title);
}
catch(MessagingException e)
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
e.printStackTrace();
}
}
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
public void formMimeMessage()
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
if(mimeMesg == null)
initMimeMessage();
MimeMultipart mimeMultipart = new MimeMultipart();
BodyPart contentBodyPart = new MimeBodyPart();
StringBuffer contentBuf = new StringBuffer("<meta content=text/html; charset=gb2312>");
contentBuf.append(content);
try
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
contentBodyPart.setContent(contentBuf.toString(), "text/html;charset=GB2312");
mimeMultipart.addBodyPart(contentBodyPart);
if(!accessories.isEmpty())
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
MimeBodyPart fileBodyPart;
for(Iterator it = accessories.iterator(); it.hasNext(); mimeMultipart.addBodyPart(fileBodyPart))
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
String filePath = (String)it.next();
fileBodyPart = new MimeBodyPart();
FileDataSource fileDataSource = new FileDataSource(filePath);
fileBodyPart.setDataHandler(new DataHandler(fileDataSource));
fileBodyPart.setFileName(MimeUtility.encodeWord(fileDataSource.getName(), "GB2312", null));
}
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
}
mimeMesg.setContent(mimeMultipart);
mimeMesg.saveChanges();
mimeMesg.setSentDate(new Date());
}
catch(MessagingException e)
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
e.printStackTrace();
}
catch(Exception ex)
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
ex.printStackTrace();
}
}
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
public void send()
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
if(mimeMesg == null)
formMimeMessage();
try
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
Transport.send(mimeMesg);
if(accessories != null && accessories.size() != 0)
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
for(int i = 0; i < accessories.size(); i++)
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
File f = new File(accessories.get(i).toString());
f.delete();
}
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
accessories.clear();
}
}
catch(Exception e)
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
e.printStackTrace();
}
}
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
public void messageDelivered(TransportEvent event)
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
Address add[] = event.getValidSentAddresses();
printEvent(event, add);
System.out.println("以上地址成功发送.");
}
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
public void messageNotDelivered(TransportEvent event)
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
Address add[] = event.getValidUnsentAddresses();
printEvent(event, add);
System.out.println("以上合法地址未能发送.");
}
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
public void messagePartiallyDelivered(TransportEvent event)
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
Address add[] = event.getValidSentAddresses();
printEvent(event, add);
System.out.println("以上地址部分发送成功.");
}
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
public void printEvent(TransportEvent event, Address add[])
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
System.out.println("**************************************");
System.out.println("evnet==" + event.getMessage().toString());
if(add != null)
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
for(int i = 0; i < add.length; i++)
System.out.println(add[i].toString());
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
}
}
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
private String user;
private String password;
private String fromAddress;
private String smtpServerDns;
private boolean authFlag;
private String receiver[];
private String title;
private String content;
private String mimeType;
private ArrayList accessories;
private Session session;
private MimeMessage mimeMesg;
}
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
------------------------------------------------------
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
import
javax.mail.Authenticator;
import
javax.mail.PasswordAuthentication;
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
public
class
MailAuthenticator
extends
Authenticator
![](https://i-blog.csdnimg.cn/blog_migrate/a41954a27d6ad96fa2c2cf816e677448.gif)
...
{
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
public MailAuthenticator()
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
user = "";
password = "";
}
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
public MailAuthenticator(String user, String password)
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
this.user = user;
this.password = password;
}
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
public MailAuthenticator(String user)
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
this.user = user;
password = "";
}
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
public PasswordAuthentication getPasswordAuthentication()
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
return new PasswordAuthentication(user, password);
}
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
private String user;
private String password;
}
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)