javamail的一个最初级的问题!

零基础学编程by学哥 2001-05-28 11:13:00
import java.util.Properties;
import javax.mail.*;
import javax.mail.internet.*;
class MailExample
{
public static void main(String[] args) throws Exception
{
String toAddr="jin24@163.net";
String fromAddr="jin24@21cn.com";
String subject="测试!";
String body="welcome javamail";
try{
Properties props = new Properties();
props.put("mail.smtp.host","smtp.163.net");
Session sesion = Session.getDefaultInstance(props, null);
Message msg = new MimeMessage(sesion);
msg.setFrom(new InternetAddress(fromAddr));
msg.setRecipient(Message.RecipientType.TO,new InternetAddress(toAddr));
msg.setSubject(subject);
msg.setText(body);
Transport.send(msg);
}
catch(Exception e)
{
System.out.println(e);
}
}
}

编译通过,运行时提示javax.mail.NoSuchProviderException: No provider for Address type: rfc822
...全文
219 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
上面的编译不通过。
java.lang.String personal可以为false???
InternetAddress
public InternetAddress(java.lang.String address,
java.lang.String personal)
throws java.io.UnsupportedEncodingException
Construct an InternetAddress given the address and personal name. The address is assumed to be a syntactically valid RFC822 address.
Parameters:
address - the address in RFC822 format
personal - the personal name
skyyoung 2001-05-28
  • 打赏
  • 举报
回复
msg.setRecipient(Message.RecipientType.TO,new InternetAddress(toAddr,false));
  • 打赏
  • 举报
回复
改过了,问题依旧。
谁可以解释一下:No provider for Address type: rfc822的内部机制?
bluevacuum 2001-05-28
  • 打赏
  • 举报
回复
建议改用smtp.163.com,也许就成了,嘿嘿,我已经吃过一次亏了!
bluevacuum 2001-05-28
  • 打赏
  • 举报
回复
一般的邮件服务器都不提供无验证的邮件发送功能,www.163.com是我唯一知道的可用的SMTP服务器
  • 打赏
  • 举报
回复
加了,没什么改变。
我加了一句:
System.out.println((new InternetAddress(fromAddr)).getType());
输出的是rfc822
不知道哪儿出了问题?
  • 打赏
  • 举报
回复
why??
Transport.send(msg);
异常??

skyyoung 2001-05-28
  • 打赏
  • 举报
回复
加多一句看看session.setDebug(true);
  • 打赏
  • 举报
回复
非常感谢各位,问题解决了,Classpath中忘记包含了mail.jar,我以为把目录放到Classpath中就可以了,真是太。。。。。。ruo 了,哈哈。马上加分。
gq 2001-05-28
  • 打赏
  • 举报
回复
我把SMTP设为:smtp.21cn.com, 编译运行没有问题,可能是环境变量的设置问题:
是否在Classpath中包含了mail.jar等库
skyyoung 2001-05-28
  • 打赏
  • 举报
回复
try

Message msg = new MimeMessage(sesion);

你的程序在我这里可以运行
正常。
  • 打赏
  • 举报
回复
我把smtp服务器换成我公司的邮件服务器,可是还是不行,输出的错误与上面一样,请问那位高手能够解答此问题?
  • 打赏
  • 举报
回复
我修改成下列代码:
import java.util.Properties;
import javax.mail.*;
import javax.mail.internet.*;
class MailExample
{
public static void main(String[] args) throws Exception
{
String toAddr="jin24@163.net";
String fromAddr="kin999@163.com";
String subject="test";
String body="welcome javamail";
try{
Properties props = new Properties();
props.put("mail.smtp.host","smtp.163.com");
Session sesion = Session.getInstance(props, null);
MimeMessage msg = new MimeMessage(sesion);
msg.setFrom(new InternetAddress(fromAddr));
msg.setRecipient(Message.RecipientType.TO,new InternetAddress(toAddr));
msg.setSubject(subject);
msg.setText(body);
System.out.println("begin");
sesion.setDebug(true);
Transport.send(msg);
System.out.println("end");
}
catch(Exception e)
{
System.out.println(e);
}
}
}
运行时的信息如下,请高手帮忙!
begin

DEBUG: getProvider() returning javax.mail.Provider[TRANSPORT,smtp,com.sun.mail.s
mtp.SMTPTransport,Sun Microsystems, Inc]
DEBUG SMTP: useEhlo true, useAuth false

DEBUG: SMTPTransport trying to connect to host "smtp.163.com", port 25

DEBUG SMTP RCVD: 220 smtp3.163.com ESMTP

DEBUG: SMTPTransport connected to host "smtp.163.com", port: 25

DEBUG SMTP SENT: EHLO xiaoyou
DEBUG SMTP RCVD: 250-smtp3.163.com
250-PIPELINING
250-SIZE 10240000
250-ETRN
250 8BITMIME

DEBUG SMTP SENT: MAIL FROM:<kin999@163.com>
DEBUG SMTP RCVD: 250 Ok

DEBUG SMTP SENT: RCPT TO:<jin24@163.net>
DEBUG SMTP RCVD: 250 Ok

Verified Addresses
jin24@163.net
DEBUG SMTP SENT: DATA
DEBUG SMTP RCVD: 354 End data with <CR><LF>.<CR><LF>

javax.activation.UnsupportedDataTypeException: no object DCH for MIME type text/
plain; charset=us-ascii
at javax.activation.ObjectDataContentHandler.writeTo(DataHandler.java:85
1)
at javax.activation.DataHandler.writeTo(DataHandler.java:305)
at javax.mail.internet.MimeBodyPart.writeTo(MimeBodyPart.java:1021)
at javax.mail.internet.MimeMessage.writeTo(MimeMessage.java:1320)
at com.sun.mail.smtp.SMTPTransport.sendMessage(SMTPTransport.java:307)
at javax.mail.Transport.send0(Transport.java:163)
at javax.mail.Transport.send(Transport.java:80)
at MailExample.main(MailExample.java:23)
javax.mail.SendFailedException: Sending failed;
nested exception is:
javax.mail.MessagingException: IOException while sending message;
nested exception is:
javax.activation.UnsupportedDataTypeException: no object DCH for MIME ty
pe text/plain; charset=us-ascii
  • 打赏
  • 举报
回复
smtp.163.net需要验证,但是好象smtp.163.com不需要验证,我改成smtp.163.com还是不行。
我把smtp.jar解压到c:\jdk1.3\lib目录下后,上面的错误变化了,现在出现下面这个错误:
javax.mail.SendFailedException: Sending failed;
nested exception is:
javax.mail.MessagingException: 550 <jin24@21cn.com>: Local user only
Kert_ake 2001-05-28
  • 打赏
  • 举报
回复
smtp.163.net是否为免费的smtp服务器?
也许需要验证
  • 打赏
  • 举报
回复
不行啊,还是有问题。请问skyyoung(路人甲) 你能否通过这个程序?
skyyoung 2001-05-28
  • 打赏
  • 举报
回复
setRecipients(Message.RecipientType.TO,InternetAddress.parse(to, false));
  • 打赏
  • 举报
回复
我试过JAVAMAIL的DEMO中的msgsendsample.java,编译无错误,运行出现同样的错误:
--Exception handling in msgsendsample.java
javax.mail.NoSuchProviderException: No provider for Address type: rfc822
at javax.mail.Session.getTransport(Session.java:475)
at javax.mail.Transport.send0(Transport.java:154)
at javax.mail.Transport.send(Transport.java:80)
at msgsendsample.main(msgsendsample.java:85)
请教谁有其他的通过了的例子程序没有?是否跟环境设置有关??
Shania 2001-05-28
  • 打赏
  • 举报
回复

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧