Transport transport = session.getTransport("smtp");transport.connect(host, username, password);
解决方案 »
- 请问有没有使用方便的tab的js库?
- eclipse问题...没装插件的eclipse也可以开发JavaEE?
- jsp+mysql 打开网页出现中文乱码“????”?
- 如何判断程序响应的时间
- 基于Lotus和基于J2EE的OA相比来说有什么不同?
- 希望 JSP 中 文本框的值等于表单中文本框"text1"的输入值,该怎么写?
- 关于框架中页面及时刷新问题?
- 请问开发工具,现在大家用eclipse还是myeclipse的多??
- spring用annotation的方法怎么给string类型注入值?
- war包部署在Linux服务器上某个文件夹下js等文件404
- 复选框有难度,求高人指点!
- 关于在存储过程中调用日期类型字段的问题。
import java.io.*;
import java.util.*;
import javax.mail.*;
import javax.mail.internet.*;
import javax.activation.*;public class Sendmailbean
{ private MimeMessage mimeMsg; private Session session;
private Properties props;
private boolean needAuth = false; private String username = "";
private String password = ""; private Multipart mp;
private SendAuth sendauth;
public Sendmailbean() {
setSmtpHost(SMTPHOST); //SMTPHOST 是发送邮件服务器的IP
createMimeMessage();
} public Sendmailbean(String smtp){
setSmtpHost(smtp);
createMimeMessage();
} public void setSmtpHost(String hostName) {
System.out.println("mail.smtp.host = "+hostName);
if(props == null)props = System.getProperties();
props.put("mail.smtp.host",hostName);
} public boolean createMimeMessage()
{
try{
session = Session.getDefaultInstance(props,null);
}
catch(Exception e){
System.err.println("Create "+e);
return false;
}
try{
mimeMsg = new MimeMessage(session);
mp = new MimeMultipart(); return true;
}
catch(Exception e){
System.err.println("Create "+e);
return false;
}
} public void setNeedAuth(boolean need) {
System.out.println("mail.smtp.auth = "+need);
if(props == null)props = System.getProperties(); if(need){
props.put("mail.smtp.auth","true");
}else{
props.put("mail.smtp.auth","false");
}
} public void setNamePass(String name,String pass) {
username = name;
password = pass;
} public boolean setSubject(String mailSubject) {
try{
mimeMsg.setSubject(mailSubject);
return true;
}
catch(Exception e) {
System.err.println("Subject "+e);
return false;
}
} public boolean setBody(String mailBody) {
try{
BodyPart bp = new MimeBodyPart();
bp.setContent(mailBody,"text/plain;charset=GB2312");
mp.addBodyPart(bp); return true;
}
catch(Exception e){
System.err.println("Body "+e);
return false;
}
} public boolean addFileAffix(String filename) {
try{
System.out.println(filename);
BodyPart bp = new MimeBodyPart();
FileDataSource fileds = new FileDataSource(filename);
bp.setDataHandler(new DataHandler(fileds));
bp.setFileName(fileds.getName()); mp.addBodyPart(bp); return true;
}
catch(Exception e){
System.err.println("File "+filename+" "+e);
return false;
}
} public boolean setFrom(String from) {
try{
System.out.println("From "+from);
mimeMsg.setFrom(new InternetAddress(from));
return true;
}
catch(Exception e)
{ return false; }
} public boolean setTo(String to){
if(to == null)return false; try{
System.out.println("To "+to);
mimeMsg.setRecipients(Message.RecipientType.TO,InternetAddress.parse(to));
return true;
}
catch(Exception e)
{ return false; } } public boolean setCopyTo(String copyto)
{
if(copyto == null)return false;
try{
System.out.println("CopyTo"+copyto);
mimeMsg.setRecipients(Message.RecipientType.CC,(Address[])InternetAddress.parse(copyto));
return true;
}
catch(Exception e)
{ return false; }
} public String sendout()
{
String ee="";
try{
mimeMsg.setContent(mp);
mimeMsg.saveChanges();
sendauth=new SendAuth(username,password);
ee+="Sendbegin....";
Session mailSession = Session.getInstance(props,(Authenticator)sendauth);
ee+="Auth....";
Transport transport = mailSession.getTransport("smtp");
ee+="Smtp....";
transport.connect((String)props.get("mail.smtp.host"),username,password);
ee+="Connect....";
transport.sendMessage(mimeMsg,mimeMsg.getRecipients(Message.RecipientType.TO));
ee+="Send....";
ee+="OK!";
transport.close(); return "OK!";
}
catch(Exception e)
{
ee+=e.toString();
return ee;
}
}
public static void main(String[] args) { String mailbody = "Hehe"; Sendmailbean themail = new Sendmailbean();
themail.setNeedAuth(true);
themail.setNamePass(NAME,PASS);//NAME,PASS 为发送邮件服务器的认证用户名和密码 if(themail.setSubject("test") == false) return;
if(themail.setBody(mailbody) == false) return;
if(themail.setTo("[email protected]") == false) return;
//if(themail.setFrom("hehe") == false) return;
//if(themail.addFileAffix("c:\\boot.ini") == false) return;
themail.sendout();
}
}
这个程序在 window 下使用 java Sendmailbean 可以发送邮件;
将 main() 中的代码加在 jsp 中也可以通过页面发送邮件。
但是在 linux 下,通过 linux 命令也能发送邮件;将 main() 中的代码加在 jsp 中就不能发送邮件了!!!
jsp 在执行
Transport transport = mailSession.getTransport("smtp");
时抛出异常:
javax.mail.NoSuchProviderException: smtp 大家看看,顶顶吧。多谢!
javaMail.jar 里有个文件javamail.default.providers,这里面有缺省的的设置,具体含义清参照文档我估计可能你的classpath里有其他的类似javamail.providers这样的文件,