你的Transport没有连接呀:
public class SendMail {
/**
* 待发送的邮件
*/
private Mail mail; /**
* 发送邮件的配置
*/
private MailBox mailBox; /**
* 传入待发送的邮件
*
* @param mailBox
* 发送邮件的配置信息
* @param mail
* 发送的邮件
*/
public SendMail(MailBox mailBox, Mail mail) {
this.mail = mail;
this.mailBox=mailBox;
} protected void send() throws Exception {
//发送邮件使用的服务器
String hostName = mailBox.getHostName();
//连接服务器的用户名
String userName = mailBox.getUserName();
//连接服务器的用户密码
String password = mailBox.getPassword(); //Properties env = System.getProperties();
Properties env=new Properties();
//存储发送邮件服务器的信息
env.put("mail.smtp.host", hostName);
//同时通过验证
env.put("mail.smtp.auth", "true"); //得到登陆器
AbstractAuthenticator authenticator = MailElementFactory.getInstance()
.createAuthenticator();
//根据属性新建一个邮件会话
Session session = Session.getDefaultInstance(env);
session.setDebug(false); //创建一个消息
MimeMessage message = new MimeMessage(session);
//设定该消息的信息 //设定发件人
UserEMailAddress fromAddress = mail.getFromUser();
if (fromAddress != null) {
String fromUser = fromAddress.getUserName();
String fromEmail = fromAddress.getEmailAddress();
InternetAddress fromInter = new InternetAddress(fromUser, fromEmail);
message.setFrom(fromInter);
} else {
InternetAddress from=new InternetAddress("[email protected]");
message.setFrom(from);
} //设定发送到
Collection toUser = mail.getToUser();
if (toUser != null && toUser.size() > 0) {
Iterator iter = toUser.iterator();
while (iter.hasNext()) {
UserEMailAddress address = (UserEMailAddress) iter.next();
addAddress(message, address, Message.RecipientType.TO);
}
} //设定抄送到
Collection copyUser = mail.getCopyUser();
if (copyUser != null && copyUser.size() > 0) {
Iterator iter = copyUser.iterator();
while (iter.hasNext()) {
UserEMailAddress address = (UserEMailAddress) iter.next();
addAddress(message, address, Message.RecipientType.CC);
}
} //密送到
Collection copySecretUser = mail.getCopySecrecyUser();
if (copySecretUser != null && copySecretUser.size() > 0) {
Iterator iter = copySecretUser.iterator();
while (iter.hasNext()) {
UserEMailAddress address = (UserEMailAddress) iter.next();
addAddress(message, address, Message.RecipientType.BCC);
}
} //设定回复地址
Collection repliesUser = mail.getRepliesUser();
if (repliesUser != null && repliesUser.size() > 0) {
Iterator replyIter = repliesUser.iterator();
Collection replyAddresses = new ArrayList();
while (replyIter.hasNext()) {
UserEMailAddress reAddress = (UserEMailAddress) replyIter
.next();
String replyUserName = reAddress.getUserName();
String replyEmail = reAddress.getEmailAddress();
InternetAddress re = new InternetAddress(replyUserName,
replyEmail);
replyAddresses.add(re);
}
message.setReplyTo((Address[]) replyAddresses
.toArray(new Address[] {}));
}
//设定需要发送收条,第二参数为回复地址,可以多个设定
if(mail.isReplySign()){
//设定收条地址
repliesUser = mail.getRepliesUser();
if (repliesUser != null && repliesUser.size() > 0) {
Iterator replyIter = repliesUser.iterator();
Collection replyAddresses = new ArrayList();
while (replyIter.hasNext()) {
UserEMailAddress reAddress = (UserEMailAddress) replyIter
.next();
String replyUserName = reAddress.getUserName();
String replyEmail = reAddress.getEmailAddress();
InternetAddress re = new InternetAddress(replyUserName,
replyEmail);
replyAddresses.add(re);
}
message.addHeader("Disposition-Notification-To","[email protected],[email protected]");
}
}
//设定主题
message.setSubject(mail.getSubject()); //设定发送时间
message.setSentDate(mail.getSendDate()); //创建消息体
buildMessageContent(message);
//加了没有反映
// message.setFlag(Flags.Flag.DRAFT,true);
// message.setFlag(Flags.Flag.SEEN,true);
message.saveChanges();
Transport transport=session.getTransport("smtp");
MailListener listener=new MailListener();
transport.addTransportListener(listener);
transport.addConnectionListener(listener);
transport.connect(hostName,userName,password);
transport.sendMessage(message,message.getAllRecipients());
transport.close();
} }
public class SendMail {
/**
* 待发送的邮件
*/
private Mail mail; /**
* 发送邮件的配置
*/
private MailBox mailBox; /**
* 传入待发送的邮件
*
* @param mailBox
* 发送邮件的配置信息
* @param mail
* 发送的邮件
*/
public SendMail(MailBox mailBox, Mail mail) {
this.mail = mail;
this.mailBox=mailBox;
} protected void send() throws Exception {
//发送邮件使用的服务器
String hostName = mailBox.getHostName();
//连接服务器的用户名
String userName = mailBox.getUserName();
//连接服务器的用户密码
String password = mailBox.getPassword(); //Properties env = System.getProperties();
Properties env=new Properties();
//存储发送邮件服务器的信息
env.put("mail.smtp.host", hostName);
//同时通过验证
env.put("mail.smtp.auth", "true"); //得到登陆器
AbstractAuthenticator authenticator = MailElementFactory.getInstance()
.createAuthenticator();
//根据属性新建一个邮件会话
Session session = Session.getDefaultInstance(env);
session.setDebug(false); //创建一个消息
MimeMessage message = new MimeMessage(session);
//设定该消息的信息 //设定发件人
UserEMailAddress fromAddress = mail.getFromUser();
if (fromAddress != null) {
String fromUser = fromAddress.getUserName();
String fromEmail = fromAddress.getEmailAddress();
InternetAddress fromInter = new InternetAddress(fromUser, fromEmail);
message.setFrom(fromInter);
} else {
InternetAddress from=new InternetAddress("[email protected]");
message.setFrom(from);
} //设定发送到
Collection toUser = mail.getToUser();
if (toUser != null && toUser.size() > 0) {
Iterator iter = toUser.iterator();
while (iter.hasNext()) {
UserEMailAddress address = (UserEMailAddress) iter.next();
addAddress(message, address, Message.RecipientType.TO);
}
} //设定抄送到
Collection copyUser = mail.getCopyUser();
if (copyUser != null && copyUser.size() > 0) {
Iterator iter = copyUser.iterator();
while (iter.hasNext()) {
UserEMailAddress address = (UserEMailAddress) iter.next();
addAddress(message, address, Message.RecipientType.CC);
}
} //密送到
Collection copySecretUser = mail.getCopySecrecyUser();
if (copySecretUser != null && copySecretUser.size() > 0) {
Iterator iter = copySecretUser.iterator();
while (iter.hasNext()) {
UserEMailAddress address = (UserEMailAddress) iter.next();
addAddress(message, address, Message.RecipientType.BCC);
}
} //设定回复地址
Collection repliesUser = mail.getRepliesUser();
if (repliesUser != null && repliesUser.size() > 0) {
Iterator replyIter = repliesUser.iterator();
Collection replyAddresses = new ArrayList();
while (replyIter.hasNext()) {
UserEMailAddress reAddress = (UserEMailAddress) replyIter
.next();
String replyUserName = reAddress.getUserName();
String replyEmail = reAddress.getEmailAddress();
InternetAddress re = new InternetAddress(replyUserName,
replyEmail);
replyAddresses.add(re);
}
message.setReplyTo((Address[]) replyAddresses
.toArray(new Address[] {}));
}
//设定需要发送收条,第二参数为回复地址,可以多个设定
if(mail.isReplySign()){
//设定收条地址
repliesUser = mail.getRepliesUser();
if (repliesUser != null && repliesUser.size() > 0) {
Iterator replyIter = repliesUser.iterator();
Collection replyAddresses = new ArrayList();
while (replyIter.hasNext()) {
UserEMailAddress reAddress = (UserEMailAddress) replyIter
.next();
String replyUserName = reAddress.getUserName();
String replyEmail = reAddress.getEmailAddress();
InternetAddress re = new InternetAddress(replyUserName,
replyEmail);
replyAddresses.add(re);
}
message.addHeader("Disposition-Notification-To","[email protected],[email protected]");
}
}
//设定主题
message.setSubject(mail.getSubject()); //设定发送时间
message.setSentDate(mail.getSendDate()); //创建消息体
buildMessageContent(message);
//加了没有反映
// message.setFlag(Flags.Flag.DRAFT,true);
// message.setFlag(Flags.Flag.SEEN,true);
message.saveChanges();
Transport transport=session.getTransport("smtp");
MailListener listener=new MailListener();
transport.addTransportListener(listener);
transport.addConnectionListener(listener);
transport.connect(hostName,userName,password);
transport.sendMessage(message,message.getAllRecipients());
transport.close();
} }
解决方案 »
- 时间格式的问题,请大家帮帮忙,谢谢
- 有一个文件存在40亿个不重复的整数(0~4294967295),可是内存仅有256M,52bit的整数有4294967295可能,如何找到剩下的29496729
- iReport包
- hibernate修改对象问题
- 新手一个strut2+s+h问题,在线等!
- ibatis框架中在*SqlMap.xml中配置SQL语句,与ScriptRunner 类执行SQL语句脚本文件的区别
- java.lang.NoClassDefFoundError
- jboss中EJB关联时出错,请大家指点一下.
- 怎样使java做的applet象浮动广告那样浮动在页面上?????急急急
- maven执行tomcat:run项目没有在tomcat里面运行
- TomCat 与 WinXP-H兼容吗?
- jdbc和oracle的连接driver问题???????
// create and fill the first message part
MimeBodyPart textBody = new MimeBodyPart();
textBody.setText(mail.getBodyText()); //添加附件
Multipart multiPart=new MimeMultipart();
Collection attackments=mail.getMutiparts();
if(attackments!=null&&attackments.size()>0){
Iterator iter=attackments.iterator();
while(iter.hasNext()){
Attackment attackment=(Attackment)iter.next();
String fileName=attackment.getFileName();
MimeBodyPart multiBodyPart=new MimeBodyPart();
FileDataSource ds=new FileDataSource(fileName);
multiBodyPart.setDataHandler(new DataHandler(ds));
String separator=File.separator;
int index=fileName.lastIndexOf(separator);
String name=fileName.substring(index+1);
multiBodyPart.setFileName(name);
multiPart.addBodyPart(multiBodyPart);
}
}
message.setContent(multiPart);
} protected void addAddress(Message message, UserEMailAddress address,
Message.RecipientType type) throws MailException {
try {
String toName = address.getUserName();
String emailAddress = address.getEmailAddress();
InternetAddress inter = new InternetAddress();
inter.setPersonal(toName);
inter.setAddress(emailAddress);
message.setRecipient(type, inter);
} catch (Exception e) {
throw new MailException(e.fillInStackTrace());
}
} public static void main(String[] args) throws Exception {
MailBox mailBox=new MailBox();
mailBox.setHostName("localhost");
mailBox.setUserName("csm");
mailBox.setPassword("7570083");
mailBox.setUserUse("d:\\mail\\localhost");
Mail mail=new Mail(mailBox.findMailFolderById(MailFolder.NOT_SEND_FOLDER));
Collection toUser=new ArrayList();
UserEMailAddress to1=new UserEMailAddress("csm","csm@localhost");
toUser.add(to1);
mail.setToUser(toUser);
mail.setSubject("mySend");
UserEMailAddress from=new UserEMailAddress("csm","[email protected]");
mail.setFromUser(from);
mail.setBodyText((new Date()).toGMTString());
//设定附件
Attackment attackment=new Attackment();
File file=new File("E:\\download\\jmail\\javamail-1.3.2ea\\demo\\sendfile.java");
attackment.setFileName("E:\\download\\jmail\\javamail-1.3.2ea\\demo\\sendfile.java");
StringBuffer attackmentBuffer=new StringBuffer();
String line=null;
BufferedReader reader=new BufferedReader(new FileReader(file));
while(true){
line=reader.readLine();
if(line==null){
break;
}
attackmentBuffer.append(line);
}
attackment.setContent(attackmentBuffer.toString());
mail.addMutipart(attackment);
attackment=new Attackment();
file=new File("D:\\eclipse\\startup.jar");
attackment.setFileName("D:\\eclipse\\startup.jar");
attackmentBuffer=new StringBuffer();
line=null;
reader=new BufferedReader(new FileReader(file));
while(true){
line=reader.readLine();
if(line==null){
break;
}
attackmentBuffer.append(line);
}
attackment.setContent(attackmentBuffer.toString());
mail.addMutipart(attackment);
SendMail test = new SendMail(mailBox, mail);
test.send();
}
"localhost" 怎么能作为邮件服务器的地址呢?!此处应改为真实的邮件服务器地址:比如你在你公司的邮箱为:[email protected],那么应改为:props.put("mail.smtp.host", "gl.com");