小弟在写一个关于邮件发送客户端的,但老是没有成功,我程序编译成功,但运行时出现异常,说是身份验证的问题,大家帮我看看,很急,谢谢了!
代码如下:import javax.mail.*;
import javax.mail.internet.*;public class QuickMailText{
public static void sendMessage(String smtpHost,String from,String to,
String subject,String messageText,String user,String password) throws MessagingException{

System.out.println("Configuring mail session for:"+smtpHost);
java.util.Properties props=new java.util.Properties();
props.put("mail.smtp.host",smtpHost);
//Authenticator auth = new MyAuthenticator();
Session mailSession=Session.getDefaultInstance(props);

System.out.println("Constructing message -from "+from+" to= "+to);
InternetAddress fromAddress=new InternetAddress(from);
InternetAddress toAddress=new InternetAddress(to);
MimeMessage testMessage=new MimeMessage(mailSession);
testMessage.setFrom(fromAddress);
testMessage.addRecipient(javax.mail.Message.RecipientType.TO,toAddress);
testMessage.setSentDate(new java.util.Date());
testMessage.setSubject(subject);
testMessage.setText(messageText);
//Transport.send(testMessage);
testMessage.saveChanges();
Transport transport = mailSession.getTransport("smtp");
transport.connect(smtpHost, username, password);
transport.sendMessage(testMessage, testMessage.getAllRecipients());
transport.close();
System.out.println("Message sent!");
}
public static void main(String [] args){ String smtphost="smtp.163.com";//假设是163的smtp
String from="[email protected]";
String to="[email protected]";
String subject="Test Message -quickmail_text";
String username="aaa";//这里只是随便给个身份和密码,在家请换上自己的
String password="111";
StringBuffer m=new StringBuffer();
m.append("hello,\n\n");
m.append("Hope all is well on your end .\n");
m.append("Cheers!");
try{
QuickMailText.sendMessage(smtphost,from,to,subject,m.toString(),username,password);
}
catch(javax.mail.MessagingException e){
e.printStackTrace();
}
}
}

异常如下:com.sun.mail.smtp.SMTPSendFailedException: 553 authentication is required,smtp13,wKjADFoA4hYYdnJEcr5NFg==.53083S2 at com.sun.mail.smtp.SMTPTransport.issueSendCommand(SMTPTransport.java:1388)
at com.sun.mail.smtp.SMTPTransport.mailFrom(SMTPTransport.java:959)
at com.sun.mail.smtp.SMTPTransport.sendMessage(SMTPTransport.java:583)
at QuickMailText.sendMessage(QuickMailText.java:33)
at QuickMailText.main(QuickMailText.java:56)

解决方案 »

  1.   

    你需要设置身份验证
    有个什么 set authentication 的函数为true就可以
    查查api把,好久不用我也忘了
      

  2.   

    楼上的,谢谢,我刚查到要加一句props.put("mail.smtp.auth","true");
    然后我编译运行后又出现这样的问题:
    at com.sun.mail.smtp.SMTPTransport.issueSendCommand(SMTPTransport.java:1388)
    at com.sun.mail.smtp.SMTPTransport.finishData(SMTPTransport.java:1215)
    at com.sun.mail.smtp.SMTPTransport.sendMessage(SMTPTransport.java:586)
    at QuickMailText.sendMessage(QuickMailText.java:34)
    at QuickMailText.main(QuickMailText.java:57)这些异常是什么呀,谁能告诉我!
    要怎么处理,大家帮帮忙!谢谢
      

  3.   

    参数没填对吧,我粘贴了你的代码发送成功,console如下
    Configuring mail session for:smtp.163.com
    Constructing message -from [email protected] to= [email protected]
    Message sent!