高手请进,关于javamail的问题! 需要一个jar包 activation.jar这个包在TOMCAT的环境中有的,加到项目的类路径就可以了! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 现在第一个问题,第二个问题解决了!现在还有就是第三个问题!为什么我打包后的程序不能正常发送邮件呢,在jbuilder9环境里就没有问题的,这个问题怎么解决了,我在打包时打mail.jar,activation.jar都加进来了,但是打包后的.exe文件就是不能发邮件!多谢各位,帮帮我了! 又有新发现了打包后的.exe文件能运行,但是用它发的邮件不能收到,就是发送没有成功,但是可以运行起来!但是.jar文件提示没有找到主类文件,程序退出,就是不能正常运行.jar文件,但是在打包时我设了主类,选自动主类一样不好使,.jar文件就是运行不起来! 你打包的时候是用Jbuilder的打包向导么?你打包的时候所有的Library都是选的 Always include all classes and resources么?如果不是你把所有的Library都选成它打包试试。我以前打包一个程序时也出现过这种问题,我想把包打小一点,所以选了required,但是打出来不能运行,后来选择all,就可以运行了。 我选的就是Always include all classes and resources了! package listingwapjf;import java.io.*;import java.net.InetAddress;import java.util.Properties;import java.util.Date;import javax.mail.*;import javax.mail.internet.*;import javax.mail.internet.MimePart.*;import javax.activation.DataContentHandler;import javax.activation.CommandMap;import javax.activation.DataHandler;public class sendmail extends Thread { private Message mimeMsg; //MIME郵件物件 private Session session; //郵件會話物件 private Properties props; //系统属性 private boolean needAuth=true; //smtp是否需要認證 private String username="[email protected]"; //smtp用户名 private String password="1234";//smtp密码 private String hostName="mail.banruo.net"; private Multipart mp; //Multipart物件,郵件內容,標題,附件等內容均添加到其中後再生成MimeMessage物件 private String mailSubject="";//主题 private String mailBody;//内容 private String tomailaddress_TO="";//发送给 private String tomailaddress_CC="";//发送给 private String frommailaddress="[email protected]";//发送者 public sendmail(String mailSubject_tmp,String mailBody_tmp) { mailSubject=mailSubject_tmp; mailBody=mailBody_tmp; props=System.getProperties(); props.put("mail.smtp.host",hostName); //设置SMTP主机地址 if(needAuth) { props.put("mail.smtp.auth","true"); } else { props.put("mail.smtp.auth","false"); } } public synchronized void run() { if(public_var.emaillist.size()==0) {//没有邮件地址 return; } for(int i=0;i<public_var.emaillist.size();i++) { if(i==0) { tomailaddress_TO=(String)public_var.emaillist.get(i);//主邮件地址 } else { if(i+1==public_var.emaillist.size()) { tomailaddress_CC=tomailaddress_CC+(String)public_var.emaillist.get(i);//主邮件地址 } else { tomailaddress_CC=tomailaddress_CC+(String)public_var.emaillist.get(i)+",";//主邮件地址 } } } //---------------//创建MIME邮件 begin try{ session = Session.getDefaultInstance(props,null); session.setDebug(true); } catch(Exception e){ System.err.println("zhengqiang0"); System.out.println(e.getMessage()); return; } try{ mimeMsg = new MimeMessage(session); mp = new MimeMultipart(); } catch(Exception e){ System.err.println("zhengqiang1"); System.out.println(e.getMessage()); return; } //---------------//创建MIME邮件 end //---------------设置邮件主题 begin try{ mimeMsg.setSubject(mailSubject); } catch(Exception e) { System.err.println("zhengqiang2"); System.out.println(e.getMessage()); return; } //---------------设置邮件主题 end //----------------设置邮件正文 begin try{ //BodyPart bp = new MimeBodyPart(); //bp.setContent("<meta http-equiv=Content-Type content=text/html; charset=GB2312>"+mailBody,"text/html; charset=GB2312"); //bp.setContent(mailBody,"text/html; charset=gb2312"); //mp.addBodyPart(bp); //---------- CommandMap cmp=CommandMap.getDefaultCommandMap(); DataContentHandler DCH = cmp.createDataContentHandler("text/html;; x-java-content-handler=com.sun.mail.handlers.text_html");//contenttype="text/palin",,"multipart/*"... if(DCH==null) { // throw new UnSupprotedDataTypeException("no object DCH for MIME type"+contenttype); System.out.println("zhengqiang"); } //---------- mimeMsg.addHeader("Content-Type","text/html"); //mimeMsg. String htmlText="<H1>Hello</H1>"+"<img src=\"http://www.jguru.com/images/logo.gif\">"; mimeMsg.setContent(htmlText,"text/html");// mimeMsg.setDataHandler(new DataHandler(javax.mail.Header.g,"text/plain")); } catch(Exception e){ System.err.println("zhengqiang3"); System.out.println(e.getMessage()); return; } //----------------设置邮件正文 end //----------------设置发送日期 begin try{ mimeMsg.setSentDate(new Date()); } catch(Exception e) { System.err.println("zhengqiang4"); System.out.println(e.getMessage()); return; } //----------------设置发送日期 end //----------------设置发送给谁 begin try{ mimeMsg.setRecipients(Message.RecipientType.TO,InternetAddress.parse(tomailaddress_TO)); mimeMsg.setRecipients(Message.RecipientType.CC,InternetAddress.parse(tomailaddress_CC)); } catch(Exception e) { System.err.println("zhengqiang5"); System.out.println(e.getMessage()); return; } //----------------设置发送给谁 end //----------------设置发送者 begin try{ mimeMsg.setFrom(new InternetAddress(frommailaddress)); } catch(Exception e) { System.err.println("zhengqiang6"); return; } //----------------设置发送者 end //----------------开始发送 begin try{ System.out.println("tttttttttttttttt0");// mimeMsg.setContent(mp); System.out.println("tttttttttttttttt1");// mimeMsg.saveChanges(); System.out.println("tttttttttttttttt2"); Session mailSession = Session.getInstance(props,null); System.out.println("tttttttttttttttt3"); Transport transport = mailSession.getTransport("smtp"); System.out.println("tttttttttttttttt4"); transport.connect((String)props.get("mail.smtp.host"),username,password); System.out.println("tttttttttttttttt5"); //transport.send(mimeMsg); transport.sendMessage(mimeMsg,mimeMsg.getRecipients(Message.RecipientType.TO)); System.out.println("tttttttttttttttt6"); //transport.send(mimeMsg,mimeMsg.getRecipients(Message.RecipientType.CC)); //transport.sendMessage(mimeMsg,mimeMsg.getRecipients(Message.RecipientType.CC)); System.out.println("tttttttttttttttt7"); transport.close(); } catch(Exception e) { System.err.println("zhengqiang7"); System.err.println(e.getMessage()); return; } //----------------开始发送 end return; //----------- }}说明:transport.sendMessage(mimeMsg,mimeMsg.getRecipients(Message.RecipientType.TO));这句话就出错了!以上是java application的程序 我的问题与这个问题比较像,但是我没有看懂它的解决方法!http://search.csdn.net/expert/topic/54/5404/2003/11/27/2500375.xml lostyq(遗忘星空) 没有打包时我一样可以发送,但是打包后就不行了! 各位你们在jbuilder中打包一样就可以知道这个问题很辣手! 把你的public_var类也写出来。我来试试。 public_var类 中只是几个vector的变量,你在用到public_var类的地方用字符串不就行了吗?这个问题与public_var类没有关系! 经过偶多方测试,终于找到解决方法 :)在sendmail.exe的同级文件夹下建一目录META-INF,在这个目录里再新建一个问叫mailcap,mailcap内容如下## @(#)mailcap 1.6 02/05/23## Default mailcap file for the JavaMail System.## JavaMail content-handlers:#text/plain;; x-java-content-handler=com.sun.mail.handlers.text_plaintext/html;; x-java-content-handler=com.sun.mail.handlers.text_htmltext/xml;; x-java-content-handler=com.sun.mail.handlers.text_xmlimage/gif;; x-java-content-handler=com.sun.mail.handlers.image_gifimage/jpeg;; x-java-content-handler=com.sun.mail.handlers.image_jpegmultipart/*;; x-java-content-handler=com.sun.mail.handlers.multipart_mixedmessage/rfc822;; x-java-content-handler=com.sun.mail.handlers.message_rfc822 CoolAbu您好,不错,我试过了可以发了!真的谢谢您还有一些热心的朋友,还有 strongsoft谢谢您帮我推了这些次!其实问题是解决了,CoolAbu我不知道你发现没有,如果你打包时选择头两个包含class的选项时是不好用的,就是加上META-INF,如果选择后两项那个都行要加上META-INF就可以发了!但是你发现没有在打包的时候在包体中已经存在mapcap文件了,我就不解的是这个为什么它的包体里有这个文件它还要读外面的!但是jbuilder中的项目里没有创建META-INF目录下的mapcap的文件时它一样可以正常发送,我就不明白jbuilder中那里的配置是与我打包后的配置不一样。这个问题是不是真的很怪!我认为还是打包的时候出现的问题!你有没有发现在jbuilder里运行程序的时候,在信息栏里都有一行这个环境!来起动程序的,是不是这行环境的配置有说头,所以这两天我都在试不同的打包方法,可能以后写程序还是会有这样的问题,我就想把这个问题做通,我正在研究为什么会这样,我打过很多程序包第一次有过这样的问题,真是不解决我闹心!呵呵,CoolAbu别急我一定会推你上★★★★的!希望CSDN的朋友共同进步!D:\JBuilder9\jdk1.4\bin\javaw -classpath "E:\listingwapjf\classes;D:\JBuilder9\lib\mail.jar;D:\JBuilder9\lib\activation.jar;D:\JBuilder9\jdk1.4\demo\jfc\Java2D\Java2Demo.jar;D:\JBuilder9\jdk1.4\demo\plugin\jfc\Java2D\Java2Demo.jar;D:\JBuilder9\jdk1.4\jre\lib\charsets.jar;D:\JBuilder9\jdk1.4\jre\lib\ext\dnsns.jar;D:\JBuilder9\jdk1.4\jre\lib\ext\ldapsec.jar;D:\JBuilder9\jdk1.4\jre\lib\ext\localedata.jar;D:\JBuilder9\jdk1.4\jre\lib\ext\sunjce_provider.jar;D:\JBuilder9\jdk1.4\jre\lib\im\indicim.jar;D:\JBuilder9\jdk1.4\jre\lib\jaws.jar;D:\JBuilder9\jdk1.4\jre\lib\jce.jar;D:\JBuilder9\jdk1.4\jre\lib\jsse.jar;D:\JBuilder9\jdk1.4\jre\lib\rt.jar;D:\JBuilder9\jdk1.4\jre\lib\sunrsasign.jar;D:\JBuilder9\jdk1.4\lib\dt.jar;D:\JBuilder9\jdk1.4\lib\htmlconverter.jar;D:\JBuilder9\jdk1.4\lib\tools.jar" listingwapjf.mainform 急!!java中奇数中文乱码 Hibernate 插入数据提示 sequence不存在 httpRequest.getParameterNames()用法 求单个jsp页面展示多条曲线示例!谢谢 HQL怎么修改不了数据 Spring注入时会有下面的警告 是什么意思? 如何在一个按钮上实现两个javascript? hibernate不解的问题!求助 请问一下:程序员第4期附带光盘 JB8 装上以后,用不了,需要输入code之类的,是不是要注册啊??? 无法输出自己赋的值 谁有基于J2EE的进销存系统的需求分析(实例),邮给我一份。 关于招聘
多谢各位,帮帮我了!
打包后的.exe文件能运行,但是用它发的邮件不能收到,就是发送没有成功,但是可以运行起来!但是.jar文件提示没有找到主类文件,程序退出,就是不能正常运行.jar文件,但是在打包时我设了主类,选自动主类一样不好使,.jar文件就是运行不起来!
import java.net.InetAddress;
import java.util.Properties;
import java.util.Date;
import javax.mail.*;
import javax.mail.internet.*;
import javax.mail.internet.MimePart.*;
import javax.activation.DataContentHandler;
import javax.activation.CommandMap;
import javax.activation.DataHandler;public class sendmail extends Thread {
private Message mimeMsg; //MIME郵件物件
private Session session; //郵件會話物件
private Properties props; //系统属性
private boolean needAuth=true; //smtp是否需要認證
private String username="[email protected]"; //smtp用户名
private String password="1234";//smtp密码
private String hostName="mail.banruo.net";
private Multipart mp; //Multipart物件,郵件內容,標題,附件等內容均添加到其中後再生成MimeMessage物件
private String mailSubject="";//主题
private String mailBody;//内容
private String tomailaddress_TO="";//发送给
private String tomailaddress_CC="";//发送给
private String frommailaddress="[email protected]";//发送者
public sendmail(String mailSubject_tmp,String mailBody_tmp) {
mailSubject=mailSubject_tmp;
mailBody=mailBody_tmp;
props=System.getProperties();
props.put("mail.smtp.host",hostName); //设置SMTP主机地址
if(needAuth)
{
props.put("mail.smtp.auth","true");
}
else
{
props.put("mail.smtp.auth","false");
}
}
public synchronized void run() {
if(public_var.emaillist.size()==0)
{//没有邮件地址
return;
}
for(int i=0;i<public_var.emaillist.size();i++)
{
if(i==0)
{
tomailaddress_TO=(String)public_var.emaillist.get(i);//主邮件地址
}
else
{
if(i+1==public_var.emaillist.size())
{
tomailaddress_CC=tomailaddress_CC+(String)public_var.emaillist.get(i);//主邮件地址
}
else
{
tomailaddress_CC=tomailaddress_CC+(String)public_var.emaillist.get(i)+",";//主邮件地址
}
}
}
//---------------//创建MIME邮件 begin
try{
session = Session.getDefaultInstance(props,null);
session.setDebug(true);
}
catch(Exception e){
System.err.println("zhengqiang0");
System.out.println(e.getMessage());
return;
}
try{
mimeMsg = new MimeMessage(session);
mp = new MimeMultipart();
}
catch(Exception e){
System.err.println("zhengqiang1");
System.out.println(e.getMessage());
return;
}
//---------------//创建MIME邮件 end
//---------------设置邮件主题 begin
try{
mimeMsg.setSubject(mailSubject);
}
catch(Exception e) {
System.err.println("zhengqiang2");
System.out.println(e.getMessage());
return;
}
//---------------设置邮件主题 end
//----------------设置邮件正文 begin
try{
//BodyPart bp = new MimeBodyPart();
//bp.setContent("<meta http-equiv=Content-Type content=text/html; charset=GB2312>"+mailBody,"text/html; charset=GB2312");
//bp.setContent(mailBody,"text/html; charset=gb2312");
//mp.addBodyPart(bp);
//----------
CommandMap cmp=CommandMap.getDefaultCommandMap();
DataContentHandler DCH = cmp.createDataContentHandler("text/html;; x-java-content-handler=com.sun.mail.handlers.text_html");//contenttype="text/palin",,"multipart/*"...
if(DCH==null)
{
// throw new UnSupprotedDataTypeException("no object DCH for MIME type"+contenttype);
System.out.println("zhengqiang");
}
//----------
mimeMsg.addHeader("Content-Type","text/html");
//mimeMsg.
String htmlText="<H1>Hello</H1>"+"<img src=\"http://www.jguru.com/images/logo.gif\">";
mimeMsg.setContent(htmlText,"text/html");
// mimeMsg.setDataHandler(new DataHandler(javax.mail.Header.g,"text/plain"));
}
catch(Exception e){
System.err.println("zhengqiang3");
System.out.println(e.getMessage());
return;
}
//----------------设置邮件正文 end
//----------------设置发送日期 begin
try{
mimeMsg.setSentDate(new Date());
}
catch(Exception e)
{
System.err.println("zhengqiang4");
System.out.println(e.getMessage());
return;
}
//----------------设置发送日期 end
//----------------设置发送给谁 begin
try{
mimeMsg.setRecipients(Message.RecipientType.TO,InternetAddress.parse(tomailaddress_TO));
mimeMsg.setRecipients(Message.RecipientType.CC,InternetAddress.parse(tomailaddress_CC));
}
catch(Exception e)
{
System.err.println("zhengqiang5");
System.out.println(e.getMessage());
return;
}
//----------------设置发送给谁 end
//----------------设置发送者 begin
try{
mimeMsg.setFrom(new InternetAddress(frommailaddress));
}
catch(Exception e)
{
System.err.println("zhengqiang6");
return;
}
//----------------设置发送者 end
//----------------开始发送 begin
try{
System.out.println("tttttttttttttttt0");
// mimeMsg.setContent(mp);
System.out.println("tttttttttttttttt1");
// mimeMsg.saveChanges();
System.out.println("tttttttttttttttt2");
Session mailSession = Session.getInstance(props,null);
System.out.println("tttttttttttttttt3");
Transport transport = mailSession.getTransport("smtp");
System.out.println("tttttttttttttttt4");
transport.connect((String)props.get("mail.smtp.host"),username,password);
System.out.println("tttttttttttttttt5");
//transport.send(mimeMsg);
transport.sendMessage(mimeMsg,mimeMsg.getRecipients(Message.RecipientType.TO));
System.out.println("tttttttttttttttt6");
//transport.send(mimeMsg,mimeMsg.getRecipients(Message.RecipientType.CC));
//transport.sendMessage(mimeMsg,mimeMsg.getRecipients(Message.RecipientType.CC));
System.out.println("tttttttttttttttt7");
transport.close();
}
catch(Exception e)
{
System.err.println("zhengqiang7");
System.err.println(e.getMessage());
return;
}
//----------------开始发送 end
return;
//-----------
}
}说明:
transport.sendMessage(mimeMsg,mimeMsg.getRecipients(Message.RecipientType.TO));
这句话就出错了!
以上是java application的程序
http://search.csdn.net/expert/topic/54/5404/2003/11/27/2500375.xml
# @(#)mailcap 1.6 02/05/23
#
# Default mailcap file for the JavaMail System.
#
# JavaMail content-handlers:
#
text/plain;; x-java-content-handler=com.sun.mail.handlers.text_plain
text/html;; x-java-content-handler=com.sun.mail.handlers.text_html
text/xml;; x-java-content-handler=com.sun.mail.handlers.text_xml
image/gif;; x-java-content-handler=com.sun.mail.handlers.image_gif
image/jpeg;; x-java-content-handler=com.sun.mail.handlers.image_jpeg
multipart/*;; x-java-content-handler=com.sun.mail.handlers.multipart_mixed
message/rfc822;; x-java-content-handler=com.sun.mail.handlers.message_rfc822
但是你发现没有在打包的时候在包体中已经存在mapcap文件了,我就不解的是这个为什么它的包体里有这个文件它还要读外面的!
但是jbuilder中的项目里没有创建META-INF目录下的mapcap的文件时它一样可以正常发送,我就不明白jbuilder中那里的配置是与我打包后的配置不一样。这个问题是不是真的很怪!我认为还是打包的时候出现的问题!你有没有发现在jbuilder里运行程序的时候,在信息栏里都有一行这个环境!来起动程序的,是不是这行环境的配置有说头,所以这两天我都在试不同的打包方法,可能以后写程序还是会有这样的问题,我就想把这个问题做通,我正在研究为什么会这样,我打过很多程序包第一次有过这样的问题,真是不解决我闹心!呵呵,CoolAbu别急我一定会推你上★★★★的!希望CSDN的朋友共同进步!D:\JBuilder9\jdk1.4\bin\javaw -classpath "E:\listingwapjf\classes;D:\JBuilder9\lib\mail.jar;D:\JBuilder9\lib\activation.jar;D:\JBuilder9\jdk1.4\demo\jfc\Java2D\Java2Demo.jar;D:\JBuilder9\jdk1.4\demo\plugin\jfc\Java2D\Java2Demo.jar;D:\JBuilder9\jdk1.4\jre\lib\charsets.jar;D:\JBuilder9\jdk1.4\jre\lib\ext\dnsns.jar;D:\JBuilder9\jdk1.4\jre\lib\ext\ldapsec.jar;D:\JBuilder9\jdk1.4\jre\lib\ext\localedata.jar;D:\JBuilder9\jdk1.4\jre\lib\ext\sunjce_provider.jar;D:\JBuilder9\jdk1.4\jre\lib\im\indicim.jar;D:\JBuilder9\jdk1.4\jre\lib\jaws.jar;D:\JBuilder9\jdk1.4\jre\lib\jce.jar;D:\JBuilder9\jdk1.4\jre\lib\jsse.jar;D:\JBuilder9\jdk1.4\jre\lib\rt.jar;D:\JBuilder9\jdk1.4\jre\lib\sunrsasign.jar;D:\JBuilder9\jdk1.4\lib\dt.jar;D:\JBuilder9\jdk1.4\lib\htmlconverter.jar;D:\JBuilder9\jdk1.4\lib\tools.jar" listingwapjf.mainform