javamail问题: 该段程序无法发送给Hotmail的用户 其他的mail地址可以收到吗?还是只有hotmail地址收不到 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 看了一下程序看不出有什么错呀,你可试着换一下其它的邮箱看下,好象hotmail的比较难发的!还有sohu的也有点特虽的啦!! 给hotmail发确实有一些问题,但是有好多使用hotmail的人,怎么能不把问题弄清楚呢,共同waiting & finding ... 我找到了一些,你看看这篇文章对你有没有帮助:http://dev.yesky.com/SoftChannel/72342371961929728/20050211/1910972.shtml 下面是我摘过来的一些:下面两段代码用于Hotmail邮件的收发: 1. 邮件收取/** 文件名:HotmailDemo.java* 创建时间:2004-9-14* 创建者:liudong*/package com.clickcom.mail;import java.util.Date;import java.util.Properties;import javax.mail.Folder;import javax.mail.Message;import javax.mail.Session;import javax.mail.Store;import javax.mail.Transport;import javax.mail.internet.InternetAddress;import javax.mail.internet.MimeMessage;/*** Hotmail邮件的收发器* @author liudong*/public class HotmailDemo { public static void main(String[] args) { receive(); } /** * 邮件接收 */ protected static void receive() { try { Properties prop = new Properties(); Session ses = Session.getInstance(prop); //使用JDAVMail Provider Store store = ses.getStore("davmail"); //无需指定服务器地址 store.connect(null, "你的帐号","密码"); if (store.isConnected()) { Folder inbox = store.getFolder("INBOX"); if (inbox.exists()) { inbox.open(Folder.READ_ONLY); int nCount = inbox.getMessageCount(); System.out.println("Inbox contains " + nCount + " messages"); // 依次显示收件箱中的每封邮件 for(int i=1;i<=nCount;i++){ MimeMessage msg = (MimeMessage) inbox.getMessage(i); System.out.println("Subject : " + msg.getSubject()); System.out.println("From : " + msg.getFrom()[0].toString()); System.out.println("Content type : " + msg.getContentType()); System.out.println(msg.getContent()); } } } } catch (Exception ex) { ex.printStackTrace(); } }} 从上面这段代码我们发现除了 Store store = ses.getStore("davmail"); 这个语句,同时不需要指定服务器地址外,其他的都跟一个普通的JavaMail应用程序没有两样,也没有引入任何跟JDAVMail有关的类。没有指定服务器地址这个比较容易理解,因为Hotmail提供HttpMail服务的地址是固定的。事实上仅有getStore这个语句跟常规邮件客户端程序有点不同的是它使用davmail字符串作为参数,而我们在使用JavaMail连接POP3服务器的时候指定参数值为pop3。怎么回事呢?因为JavaMail是通过协议名来加载Provider类的。打开JDAVMail.0.9.006.jar这个jar文件就会发现在META-INF目录下有一个文件javamail.providers,该文件内容如下:protocol=davmail; type=store; class=com.posisoft.jdavmail.JDAVMailStore;vendor=Positive Software;protocol=davmail_xmit;type=transport;class=com.posisoft.jdavmail.JDAVMailTransport;vendor=Positive Software; 因此当我们指定协议名为davmail时,JavaMail就会自动加载com.posisoft.jdavmail.JDAVMailStore类进行处理,因此通过传入davmail字符串所得到的store实例实际上是类com.posisoft.jdavmail.JDAVMailStore的一个实例,这样我想大家应该了解了前面这段程序的工作原理。 我们再来看JDAVMail发送邮件的代码片段:/*** 邮件发送*/protected static void send() { try { Properties prop = new Properties(); //邮件发送者地址 prop.setProperty("mail.davmail.from","[email protected]"); Session ses = Session.getInstance(prop); //获得JDAVMail的邮件发送实例 Transport transport = ses.getTransport("davmail_xmit"); //连接到Hotmail服务器,请替换为自己的用户名和口令 transport.connect(null, "用户名","口令"); // 准备要发送的邮件 MimeMessage txMsg = new MimeMessage(ses); txMsg.setSubject("This is the subject"); //邮件发送者地址 InternetAddress addrFrom = new InternetAddress("[email protected]"); txMsg.setFrom(addrFrom); //邮件接收者地址 InternetAddress addrTo = new InternetAddress("[email protected]", "cdef"); txMsg.addRecipient(Message.RecipientType.TO, addrTo); //邮件内容 txMsg.setText("Hello world !"); txMsg.setSentDate(new Date()); //发送邮件 transport.sendMessage(txMsg, txMsg.getAllRecipients()); } catch (Exception ex) { ex.printStackTrace(); }} 同样这段代码使用了davmail_xmit协议来获取JDAVMail的邮件发送实例,通过前面提到的javamail.providers文件不难知道JDAVMail使用类com.posisoft.jdavmail.JDAVMailTransport进行邮件的发送处理。 在实际测试中发现不管是JDAVMail还是其他的邮件工具,使用Hotmail进行邮件的发送速度比较慢,差不多有几分钟后才能收到相应的信息,因此如果测试中发现该问题请耐心等待。 我想通过本文介绍如何利用JDAVMail收发Hotmail邮件,以及研究JDAVMail的源码,不仅可以更加深入了解JavaMail的体系结构,对编写JavaMail Provider也有更加具体的参照。另外希望为正困挠于如何在Java程序中访问Hotmail邮件的朋友们排忧解难。同时也非常欢迎通过我的网站 http://www.javayou.com 跟我交流在使用中遇到的问题。 多谢诸位了 JDAVMail还是不行现在我使用PHP+JSP解决问题了再说一句:Java真是垃圾的东西 怎么在jsp中播放 rmvb ,格式的视频。 如何把项目里的配置文件移到项目外! 请问怎么阅读xml的文档 ???从数据库中读出的数据与xml的问题???? 本人想学习JAVA,需要下载哪些开发工具? STRUTS 的问题,No action instance for path 学习J2EE所需要的软件是什么? 自动垃圾收集在CORBA中不可用,要自己处理垃圾吗?那岂不是失去了java的一大优势? jbuilder8能整合websphere5吗? 这里为什么输出的a.s=1? javamail问题: 该段程序无法发送给Hotmail的用户 请问有没有jboss4和tomcat的集成包下。
http://dev.yesky.com/SoftChannel/72342371961929728/20050211/1910972.shtml
下面两段代码用于Hotmail邮件的收发: 1. 邮件收取/*
* 文件名:HotmailDemo.java
* 创建时间:2004-9-14
* 创建者:liudong
*/
package com.clickcom.mail;import java.util.Date;
import java.util.Properties;import javax.mail.Folder;
import javax.mail.Message;
import javax.mail.Session;
import javax.mail.Store;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;/**
* Hotmail邮件的收发器
* @author liudong
*/
public class HotmailDemo {
public static void main(String[] args) {
receive();
} /**
* 邮件接收
*/ protected static void receive() {
try {
Properties prop = new Properties();
Session ses = Session.getInstance(prop);
//使用JDAVMail Provider
Store store = ses.getStore("davmail");
//无需指定服务器地址
store.connect(null, "你的帐号","密码");
if (store.isConnected()) {
Folder inbox = store.getFolder("INBOX");
if (inbox.exists()) {
inbox.open(Folder.READ_ONLY);
int nCount = inbox.getMessageCount();
System.out.println("Inbox contains " + nCount + " messages");
// 依次显示收件箱中的每封邮件
for(int i=1;i<=nCount;i++){
MimeMessage msg = (MimeMessage) inbox.getMessage(i);
System.out.println("Subject : " + msg.getSubject());
System.out.println("From : " + msg.getFrom()[0].toString());
System.out.println("Content type : " + msg.getContentType());
System.out.println(msg.getContent());
}
}
}
} catch (Exception ex) {
ex.printStackTrace();
}
}
} 从上面这段代码我们发现除了 Store store = ses.getStore("davmail"); 这个语句,同时不需要指定服务器地址外,其他的都跟一个普通的JavaMail应用程序没有两样,也没有引入任何跟JDAVMail有关的类。没有指定服务器地址这个比较容易理解,因为Hotmail提供HttpMail服务的地址是固定的。事实上仅有getStore这个语句跟常规邮件客户端程序有点不同的是它使用davmail字符串作为参数,而我们在使用JavaMail连接POP3服务器的时候指定参数值为pop3。怎么回事呢?因为JavaMail是通过协议名来加载Provider类的。打开JDAVMail.0.9.006.jar这个jar文件就会发现在META-INF目录下有一个文件javamail.providers,该文件内容如下:protocol=davmail;
type=store; class=com.posisoft.jdavmail.JDAVMailStore;
vendor=Positive Software;
protocol=davmail_xmit;
type=transport;
class=com.posisoft.jdavmail.JDAVMailTransport;
vendor=Positive Software; 因此当我们指定协议名为davmail时,JavaMail就会自动加载com.posisoft.jdavmail.JDAVMailStore类进行处理,因此通过传入davmail字符串所得到的store实例实际上是类com.posisoft.jdavmail.JDAVMailStore的一个实例,这样我想大家应该了解了前面这段程序的工作原理。 我们再来看JDAVMail发送邮件的代码片段:/**
* 邮件发送
*/
protected static void send() {
try {
Properties prop = new Properties();
//邮件发送者地址
prop.setProperty("mail.davmail.from","[email protected]");
Session ses = Session.getInstance(prop);
//获得JDAVMail的邮件发送实例
Transport transport = ses.getTransport("davmail_xmit");
//连接到Hotmail服务器,请替换为自己的用户名和口令
transport.connect(null, "用户名","口令"); // 准备要发送的邮件
MimeMessage txMsg = new MimeMessage(ses);
txMsg.setSubject("This is the subject"); //邮件发送者地址
InternetAddress addrFrom = new InternetAddress("[email protected]");
txMsg.setFrom(addrFrom); //邮件接收者地址
InternetAddress addrTo = new InternetAddress("[email protected]", "cdef");
txMsg.addRecipient(Message.RecipientType.TO, addrTo); //邮件内容
txMsg.setText("Hello world !");
txMsg.setSentDate(new Date()); //发送邮件
transport.sendMessage(txMsg, txMsg.getAllRecipients());
} catch (Exception ex) {
ex.printStackTrace();
}
} 同样这段代码使用了davmail_xmit协议来获取JDAVMail的邮件发送实例,通过前面提到的javamail.providers文件不难知道JDAVMail使用类com.posisoft.jdavmail.JDAVMailTransport进行邮件的发送处理。 在实际测试中发现不管是JDAVMail还是其他的邮件工具,使用Hotmail进行邮件的发送速度比较慢,差不多有几分钟后才能收到相应的信息,因此如果测试中发现该问题请耐心等待。 我想通过本文介绍如何利用JDAVMail收发Hotmail邮件,以及研究JDAVMail的源码,不仅可以更加深入了解JavaMail的体系结构,对编写JavaMail Provider也有更加具体的参照。另外希望为正困挠于如何在Java程序中访问Hotmail邮件的朋友们排忧解难。同时也非常欢迎通过我的网站 http://www.javayou.com 跟我交流在使用中遇到的问题。
现在我使用PHP+JSP解决问题了再说一句:Java真是垃圾的东西