import java.util.*;
import javax.activation.*;
import javax.mail.*;
import javax.mail.internet.*;
/**
* <p>Title: 简单的MailBean</p>
* <p>Description: 提供简便的Mail发送功能(支持多附件及身份验证)</p>
* <p>Copyright: Copyright (c) 2003</p>
* <p>Company: </p>
* @author diystar
* @version 1.0
*/
public class SimpleMail
{
private String sender = null;//发件人地址
private String smtpHost = null;//邮件发送服务器(smtp)
private String user = null;//登录用户名
private String password = null;//登录密码
private String receiver = null;//收件人地址
private String copyReceiver = null;//抄送人地址
private String hiddenReceiver = null;//暗送人地址
private String subject = null;//mail主题
private String content = null;//mail内容
private String affixPath = null;//mail附件的路径
/** 设置发件人地址 */
public void setSender(String sender) {this.sender = sender;}
public String getSender() {return sender;}
/** 设置邮件发送服务器(smtp) */
public void setSmtpHost(String smtpHost) {this.smtpHost = smtpHost;}
public String getSmtpHost() {return smtpHost;}
/** 设置登录用户名 */
public void setUser(String user) {this.user = user;}
public String getUser() {return user;}
/** 设置登录密码 */
public void setPassword(String password) {this.password = password;}
public String getPassword() {return password;}
/** 设置收件人地址 */
public void setReceiver(String receiver) {this.receiver = receiver;}
public String getReceiver() {return receiver;}
/** 设置抄送人地址 */
public void setCopyReceiver(String receiver) {this.copyReceiver = receiver;}
public String getCopyReceiver() {return copyReceiver;}
/** 设置暗送人地址 */
public void setHiddenReceiver(String receiver) {this.hiddenReceiver = receiver;}
public String getHiddenReceiver() {return hiddenReceiver;}
/** 设置mail主题 */
public void setSubject(String subject) {this.subject = subject;}
public String getSubject() {return subject;}
/** 设置mail内容 */
public void setContent(String content) {this.content = content;}
public String getContent() {return content;}
/** 设置mail附件的路径 */
public void setAffixPath(String affixPath) {this.affixPath = affixPath;}
public String getAffixPath() {return affixPath;}
/**
* 使用smtp发送邮件
* @throws MessagingException mail发送失败
*/
public void smtp() throws MessagingException
{
if (smtpHost == null) throw new MessagingException("smtpHost not found");
if (user == null) throw new MessagingException("user not found");
if (password == null) throw new MessagingException("password not found");
if (receiver == null && copyReceiver == null && hiddenReceiver == null)
throw new MessagingException("receiver not found");
Properties properties = new Properties();
properties.put("mail.smtp.host", smtpHost);//设置smtp主机
properties.put("mail.smtp.auth", "true");//使用smtp身份验证
Session session = Session.getDefaultInstance(properties, new Authenticator()
{
public PasswordAuthentication getPasswordAuthentication()
{
return new PasswordAuthentication(user, password);
}
});//获得邮件会话对象
MimeMessage mimeMsg = new MimeMessage(session);//创建MIME邮件对象
if (sender != null)//设置发件人地址
mimeMsg.setFrom(new InternetAddress(sender));
if (receiver != null)//设置收件人地址
mimeMsg.setRecipients(Message.RecipientType.TO, parse(receiver));
if (copyReceiver != null)//设置抄送人地址
mimeMsg.setRecipients(Message.RecipientType.CC, parse(copyReceiver));
if (hiddenReceiver != null)//设置暗送人地址
mimeMsg.setRecipients(Message.RecipientType.BCC, parse(hiddenReceiver));
if (subject != null)//设置邮件主题
mimeMsg.setSubject(subject, "UTF-8");
MimeBodyPart part = new MimeBodyPart();//mail内容部分
part.setText(content == null ? "" : content, "UTF-8");
Multipart multipart = new MimeMultipart();
multipart.addBodyPart(part);//在 Multipart 中增加mail内容部分
if (affixPath != null)//mail附件部分
{
ArrayList parts = parsePath(affixPath);
for (int i = 0; i < parts.size(); i ++)
{
multipart.addBodyPart( (MimeBodyPart) parts.get(i));
}
}
mimeMsg.setContent(multipart);//增加 Multipart 到信息体
mimeMsg.setSentDate(new Date());//设置发送日期 Transport.send(mimeMsg);//发送邮件
}
/** 解析地址集合字符串 */
private InternetAddress[] parse(String addressSet) throws AddressException
{
ArrayList list = new ArrayList(); StringTokenizer tokens = new StringTokenizer(addressSet, ";");
while (tokens.hasMoreTokens())
{
list.add(new InternetAddress(tokens.nextToken().trim()));
} InternetAddress[] addressArray = new InternetAddress[list.size()];
list.toArray(addressArray);
return addressArray;
}
/** 解析附件路径字符串 */
private ArrayList parsePath(String affixPath) throws MessagingException
{
ArrayList list = new ArrayList(); StringTokenizer tokens = new StringTokenizer(affixPath, ";");
while (tokens.hasMoreTokens())
{
MimeBodyPart part = new MimeBodyPart();
FileDataSource source = new FileDataSource(tokens.nextToken().trim());
part.setDataHandler(new DataHandler(source));
part.setFileName(source.getName());
list.add(part);
} return list;
}}
import javax.activation.*;
import javax.mail.*;
import javax.mail.internet.*;
/**
* <p>Title: 简单的MailBean</p>
* <p>Description: 提供简便的Mail发送功能(支持多附件及身份验证)</p>
* <p>Copyright: Copyright (c) 2003</p>
* <p>Company: </p>
* @author diystar
* @version 1.0
*/
public class SimpleMail
{
private String sender = null;//发件人地址
private String smtpHost = null;//邮件发送服务器(smtp)
private String user = null;//登录用户名
private String password = null;//登录密码
private String receiver = null;//收件人地址
private String copyReceiver = null;//抄送人地址
private String hiddenReceiver = null;//暗送人地址
private String subject = null;//mail主题
private String content = null;//mail内容
private String affixPath = null;//mail附件的路径
/** 设置发件人地址 */
public void setSender(String sender) {this.sender = sender;}
public String getSender() {return sender;}
/** 设置邮件发送服务器(smtp) */
public void setSmtpHost(String smtpHost) {this.smtpHost = smtpHost;}
public String getSmtpHost() {return smtpHost;}
/** 设置登录用户名 */
public void setUser(String user) {this.user = user;}
public String getUser() {return user;}
/** 设置登录密码 */
public void setPassword(String password) {this.password = password;}
public String getPassword() {return password;}
/** 设置收件人地址 */
public void setReceiver(String receiver) {this.receiver = receiver;}
public String getReceiver() {return receiver;}
/** 设置抄送人地址 */
public void setCopyReceiver(String receiver) {this.copyReceiver = receiver;}
public String getCopyReceiver() {return copyReceiver;}
/** 设置暗送人地址 */
public void setHiddenReceiver(String receiver) {this.hiddenReceiver = receiver;}
public String getHiddenReceiver() {return hiddenReceiver;}
/** 设置mail主题 */
public void setSubject(String subject) {this.subject = subject;}
public String getSubject() {return subject;}
/** 设置mail内容 */
public void setContent(String content) {this.content = content;}
public String getContent() {return content;}
/** 设置mail附件的路径 */
public void setAffixPath(String affixPath) {this.affixPath = affixPath;}
public String getAffixPath() {return affixPath;}
/**
* 使用smtp发送邮件
* @throws MessagingException mail发送失败
*/
public void smtp() throws MessagingException
{
if (smtpHost == null) throw new MessagingException("smtpHost not found");
if (user == null) throw new MessagingException("user not found");
if (password == null) throw new MessagingException("password not found");
if (receiver == null && copyReceiver == null && hiddenReceiver == null)
throw new MessagingException("receiver not found");
Properties properties = new Properties();
properties.put("mail.smtp.host", smtpHost);//设置smtp主机
properties.put("mail.smtp.auth", "true");//使用smtp身份验证
Session session = Session.getDefaultInstance(properties, new Authenticator()
{
public PasswordAuthentication getPasswordAuthentication()
{
return new PasswordAuthentication(user, password);
}
});//获得邮件会话对象
MimeMessage mimeMsg = new MimeMessage(session);//创建MIME邮件对象
if (sender != null)//设置发件人地址
mimeMsg.setFrom(new InternetAddress(sender));
if (receiver != null)//设置收件人地址
mimeMsg.setRecipients(Message.RecipientType.TO, parse(receiver));
if (copyReceiver != null)//设置抄送人地址
mimeMsg.setRecipients(Message.RecipientType.CC, parse(copyReceiver));
if (hiddenReceiver != null)//设置暗送人地址
mimeMsg.setRecipients(Message.RecipientType.BCC, parse(hiddenReceiver));
if (subject != null)//设置邮件主题
mimeMsg.setSubject(subject, "UTF-8");
MimeBodyPart part = new MimeBodyPart();//mail内容部分
part.setText(content == null ? "" : content, "UTF-8");
Multipart multipart = new MimeMultipart();
multipart.addBodyPart(part);//在 Multipart 中增加mail内容部分
if (affixPath != null)//mail附件部分
{
ArrayList parts = parsePath(affixPath);
for (int i = 0; i < parts.size(); i ++)
{
multipart.addBodyPart( (MimeBodyPart) parts.get(i));
}
}
mimeMsg.setContent(multipart);//增加 Multipart 到信息体
mimeMsg.setSentDate(new Date());//设置发送日期 Transport.send(mimeMsg);//发送邮件
}
/** 解析地址集合字符串 */
private InternetAddress[] parse(String addressSet) throws AddressException
{
ArrayList list = new ArrayList(); StringTokenizer tokens = new StringTokenizer(addressSet, ";");
while (tokens.hasMoreTokens())
{
list.add(new InternetAddress(tokens.nextToken().trim()));
} InternetAddress[] addressArray = new InternetAddress[list.size()];
list.toArray(addressArray);
return addressArray;
}
/** 解析附件路径字符串 */
private ArrayList parsePath(String affixPath) throws MessagingException
{
ArrayList list = new ArrayList(); StringTokenizer tokens = new StringTokenizer(affixPath, ";");
while (tokens.hasMoreTokens())
{
MimeBodyPart part = new MimeBodyPart();
FileDataSource source = new FileDataSource(tokens.nextToken().trim());
part.setDataHandler(new DataHandler(source));
part.setFileName(source.getName());
list.add(part);
} return list;
}}
{
public Email_Autherticator()
{
super();
}
public PasswordAuthentication getPasswordAuthentication()
{
return new PasswordAuthentication("you mail","you pass");
}
}
不成功,还是通不过验证。为什么???
properties.put("mail.transport.protocol", "smtp");
其中
String sSmtpServer 是说 smtpserver
String sName 是说 用户名
String sFrom 是说 发信人地址
String sPwd 是说 口令
改成自己的boolean sendMail( String to, String subject, String body )
{//smtp Authenticate
class SmtpAuthenticator extends javax.mail.Authenticator
{
String usr=null;
String pw=null;
public SmtpAuthenticator(String user,String pass)
{
this.usr = user;
this.pw = pass;
}
protected javax.mail.PasswordAuthentication getPasswordAuthentication()
{
return new javax.mail.PasswordAuthentication(usr, pw);
}
}
if( to.length() == 0 ) return false;
if( subject.length() == 0 ) return false;
if( body.length() == 0 ) return false;
try
{
SystemSetupMaster sysM=new SystemSetupMaster();
String sSmtpServer = sysM.getSystem( "SmtpServer" );
String sName = sysM.getSystem( "UserName" );
String sFrom = sysM.getSystem( "MailFrom" );
String sPwd = sysM.getSystem( "PassWord" );
Transport transport;
Properties props = System.getProperties();
// -- Attaching to default Session, or we could start a new one --
props.put( "mail.smtp.auth", "true");
props.put("mail.smtp.host", sSmtpServer);
SmtpAuthenticator sa = new SmtpAuthenticator(sName,sPwd);
Session sess=Session.getInstance(props,sa);
sess.setDebug(false);
// -- Create a new message --
Message msg=new MimeMessage(sess);
msg.setSentDate(new java.util.Date());
// -- Set the FROM and TO fields --
msg.setSentDate(new Date());
msg.setFrom(new InternetAddress(sFrom));
msg.setSubject(subject);
msg.setRecipient(Message.RecipientType.TO,new InternetAddress(to));
//msg.setText(body);
// -- Set some other header information --
//msg.setHeader("X-Mailer", "Sendmail");
msg.setContent(body, "text/plain;charset=EUC-JP");
// -- Send the message --
transport=sess.getTransport( "smtp" );
transport.connect(sSmtpServer,sName,sPwd);
transport.sendMessage(msg,msg.getAllRecipients());
transport.close(); return true;
}
catch( Exception ex )
{
ex.printStackTrace();
return false;
}
}