实木地板精油:请问一个Java Mail问题!

来源:百度文库 编辑:中科新闻网 时间:2024/04/28 02:22:31
我的程序为:
import java.util.Properties;
import java.util.*;
import javax.mail.internet.*;
import javax.mail.*;
import javax.activation.*;
class MailSender {
public static void main(String args[]) throws Exception {
String smtp="SMTP.163.COM";
String from="abc1@163.com";//用户邮箱地址
String to="abc2@163.com";
//构造用户身份验证类对象,参数为用户名和口令
EmailAuthenticator auth=new EmailAuthenticator("abc1","123");
//获取系统属性对象
Properties props=System.getProperties();
//设置邮件服务器和是否身份验证
props.put("mail.smtp.host",smtp);
props.put("mail.smtp.auth","true");
props.put("mail.transport.protocol","smtp");
//获得Session对象
Session se=Session.getInstance(props,(Authenticator)auth);
//以Session作为参数建立MimeMessage对象
//Mime指Multipurpose Internet Mail Extension协议
//MimeMessage是支持该协议的类,用来描述邮件的内容。
MimeMessage msg=new MimeMessage(se);
msg.setFrom(new InternetAddress(from));
msg.setRecipient(Message.RecipientType.TO,new InternetAddress(to));
msg.addRecipient(Message.RecipientType.TO,new InternetAddress("abc3@163.com"));
msg.setSubject("Send mail 测试");
msg.setSentDate(new Date());
String s="Test text 测试";
msg.setContent(s,"text/plain");
//设置好MimeMessage后,从Session中建立Transport对象
//Transport对象用于发送邮件信息,getTransport的参数
//表明发送邮件使用的协议
//Transport.send(msg);

msg.saveChanges();
Transport tran=se.getTransport("smtp");
tran.connect(smtp,"abc1","123");
tran.sendMessage(msg,msg.getAllRecipients());
tran.close();

System.out.println("OK.");
}
}
//邮件用户身份验证类
class EmailAuthenticator extends Authenticator {
private String username;
private String userpass;
EmailAuthenticator(String un,String up){
super();
username=un;
userpass=up;
}
public PasswordAuthentication getPasswordAuthentication(){
return new PasswordAuthentication(username,userpass);
}
}
编译是通过了,但是执行程序时,虽然邮件时发送出去了,但程序还出现了异常,具体如下:
G:\学习Java>java MailSender
Exception in thread "main" com.sun.mail.smtp.SMTPSendFailedException: 354

at com.sun.mail.smtp.SMTPTransport.issueSendCommand(SMTPTransport.java:1
333)
at com.sun.mail.smtp.SMTPTransport.finishData(SMTPTransport.java:1160)
at com.sun.mail.smtp.SMTPTransport.sendMessage(SMTPTransport.java:538)
at MailSender.main(MailSender.java:40)
请问这是为什么?SMTPSendFailedException怎么来的,怎么修改程序?谢谢!

那是会什么原因呢?
听说是发送邮件时必须先登录接收邮件服务器
这是什么回事?

我觉得和程序没有关系!