上面的编译不通过。 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
我试过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) 请教谁有其他的通过了的例子程序没有?是否跟环境设置有关??
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 <[email protected]>: Local user only
我修改成下列代码: import java.util.Properties; import javax.mail.*; import javax.mail.internet.*; class MailExample { public static void main(String[] args) throws Exception { String toAddr="[email protected]"; String fromAddr="[email protected]"; 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); } } } 运行时的信息如下,请高手帮忙! beginDEBUG: getProvider() returning javax.mail.Provider[TRANSPORT,smtp,com.sun.mail.s mtp.SMTPTransport,Sun Microsystems, Inc] DEBUG SMTP: useEhlo true, useAuth falseDEBUG: SMTPTransport trying to connect to host "smtp.163.com", port 25DEBUG SMTP RCVD: 220 smtp3.163.com ESMTPDEBUG: SMTPTransport connected to host "smtp.163.com", port: 25DEBUG SMTP SENT: EHLO xiaoyou DEBUG SMTP RCVD: 250-smtp3.163.com 250-PIPELINING 250-SIZE 10240000 250-ETRN 250 8BITMIMEDEBUG SMTP SENT: MAIL FROM:<[email protected]> DEBUG SMTP RCVD: 250 OkDEBUG SMTP SENT: RCPT TO:<[email protected]> DEBUG SMTP RCVD: 250 OkVerified Addresses [email protected] 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
我加了一句:
System.out.println((new InternetAddress(fromAddr)).getType());
输出的是rfc822
不知道哪儿出了问题?
谁可以解释一下:No provider for Address type: rfc822的内部机制?
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
--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)
请教谁有其他的通过了的例子程序没有?是否跟环境设置有关??
也许需要验证
我把smtp.jar解压到c:\jdk1.3\lib目录下后,上面的错误变化了,现在出现下面这个错误:
javax.mail.SendFailedException: Sending failed;
nested exception is:
javax.mail.MessagingException: 550 <[email protected]>: Local user only
import java.util.Properties;
import javax.mail.*;
import javax.mail.internet.*;
class MailExample
{
public static void main(String[] args) throws Exception
{
String toAddr="[email protected]";
String fromAddr="[email protected]";
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);
}
}
}
运行时的信息如下,请高手帮忙!
beginDEBUG: getProvider() returning javax.mail.Provider[TRANSPORT,smtp,com.sun.mail.s
mtp.SMTPTransport,Sun Microsystems, Inc]
DEBUG SMTP: useEhlo true, useAuth falseDEBUG: SMTPTransport trying to connect to host "smtp.163.com", port 25DEBUG SMTP RCVD: 220 smtp3.163.com ESMTPDEBUG: SMTPTransport connected to host "smtp.163.com", port: 25DEBUG SMTP SENT: EHLO xiaoyou
DEBUG SMTP RCVD: 250-smtp3.163.com
250-PIPELINING
250-SIZE 10240000
250-ETRN
250 8BITMIMEDEBUG SMTP SENT: MAIL FROM:<[email protected]>
DEBUG SMTP RCVD: 250 OkDEBUG SMTP SENT: RCPT TO:<[email protected]>
DEBUG SMTP RCVD: 250 OkVerified Addresses
[email protected]
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
正常。
是否在Classpath中包含了mail.jar等库