Java Mail API 问题 - setting the smtp provider请高手指教(C/S,R5)
我写一个java agent,使用java mail api向外网邮件系统发送一封邮件但是当我调用这个代理的时候,产生了一个错误.
javax.mail.NoSuchProviderException: No provider for smtp
at javax.mail.Session.getProvider(Session.java:249)
at javax.mail.Session.getTransport(Session.java:442)
at javax.mail.Session.getTransport(Session.java:423)
at SendMail.Send(SendMail.java:53)
at JavaAgent.NotesMain(JavaAgent.java:22)
at lotus.domino.AgentBase.runNotes(AgentBase.java:160)
at lotus.domino.NotesThread.run(NotesThread.java:203)
下面是代理的核心代码:
import java.io.PrintStream;
import java.util.*;
import javax.mail.*;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
public class SendMail
{
public SendMail()
{
}
public boolean Send(String s, Vector vector, String s1, String s2)
{
try
{
Properties properties = new Properties();
Session session = Session.getInstance(properties, null);
properties.put("mail.smtp.host", "");
properties.put("mail.smtp.auth", "true");
MimeMessage mimemessage = new MimeMessage(session);
mimemessage.setFrom(new InternetAddress(s));
mimemessage.setSubject(s1);
mimemessage.setSentDate(new Date());
mimemessage.setText(s2);
Transport transport = session.getTransport("smtp");
System.out.println("smtp!");
transport.connect("smtp服务器", 25, "user", "password");
for(int i = 0; i < vector.size(); i++)
{
String s3 = (String)vector.elementAt(i);
if(s3 != null && !s3.equals(""))
{
InternetAddress internetaddress = new InternetAddress(s3);
mimemessage.setRecipient(javax.mail.Message.RecipientType.TO, internetaddress);
transport.sendMessage(mimemessage, mimemessage.getAllRecipients());
}
}
transport.close();
return true;
}
catch(Exception e)
{
e.printStackTrace();
// System.out.println(messagingexception.toString());
}
return false;
}
}
使用编辑项目按钮我添加了mail.jar,activation.jar 和 the smtp.jar 尽管我不知道SMTP.JAR是否有用。 javauserclasses已经设置。
说明:该程序在R6下运行正常,R5下是否还需要其它配置,请高手指点不胜感激!