SMTP 邮件服务器身份验证怎么搞??? 用base64,找java源码和我联系[email protected] 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 Properties prop = new Properties();prop.setProperty("mail.transport.protocol","smtp");prop.setProperty("mail.smtp.host","smtp.sina.com.cn");//Sina的好像是这个地址吧prop.setProperty("mail.smtp.auth","true");Session session = Session.getInstance(prop, new Authenticator() { protected PasswordAuthentication getPasswordAuthentication() { return new PasswordAuthentication("YourUserNameInSina","YourPassword"); } }); Transport trans = session.getTransport();//sendmessage,使用trans来传送,不要用静态方法trans.close();如果是其他smtp服务器你换一下上面得代码就行了 多谢qingbt能发到我邮箱里面嘛?[email protected] to ChDw(米) Session Transport这两个类是不是要到sun上面新下载啊? if(authorization==true){ if(!sendToServer("AUTH LOGIN")) return; if(!responseFromServer("334", "未知错误,也许你的服务器不需要身份验证!")) return; user=new BASE64Encoder().encode(user.getBytes()); if(!sendToServer(user)) return; if(!responseFromServer("334", "注册失败,无效的用户名!")) return; password=new BASE64Encoder().encode(password.getBytes()); if(!sendToServer(password)) return; if(!responseFromServer("235", "注册失败,请检查你的用户名和密码!")) return; }我自己做的smtp客户端的一部分代码 to TourWind(风)能不能再给全一点啊?谢谢! //协议对话部分try{ clientSocket=new Socket(host,port); outToServer= new DataOutputStream( clientSocket.getOutputStream()); inData= new BufferedReader( new InputStreamReader(clientSocket.getInputStream())); if(!responseFromServer("220","无法解析主机")) return; if(!sendToServer("EHLO stmp.taohoo.com")) return; if(!responseFromServer("250","未知错误,请查看LOG!")) return; if(authorization==true){ if(!sendToServer("AUTH LOGIN")) return; if(!responseFromServer("334", "未知错误,也许你的服务器不需要身份验证!")) return; user=new BASE64Encoder().encode(user.getBytes()); if(!sendToServer(user)) return; if(!responseFromServer("334", "注册失败,无效的用户名!")) return; password=new BASE64Encoder().encode(password.getBytes()); if(!sendToServer(password)) return; if(!responseFromServer("235", "注册失败,请检查你的用户名和密码!")) return; } if(!sendToServer("MAIL FROM:<"+mailfrom+">")) return; if(!responseFromServer("250","错误!可能你还没有注册,或者输入的发件人地址不正确")) return; if(!sendToServer("RCPT TO:<"+mailto+">")) return; if(!responseFromServer("25","错误!无效的发件人地址"))//回复应该是250或者251 return; if(!sendToServer("DATA")) return; if(!responseFromServer("354","未知错误,请查看LOG!")) return; if(!sendToServer("To:"+mailto)) return; if(!sendToServer("From:"+mailfrom)) return; if(!sendToServer("Subject:"+subject)) return; if(!sendToServer(content)) return; String msgEnd=new String(String.valueOf(".")); if(!sendToServer(msgEnd)) return; if(!responseFromServer("250","未知错误!")) return; if(!sendToServer("QUIT")) return; if(!responseFromServer("221","未知错误!")) return; inData.close(); outToServer.close(); clientSocket.close(); JOptionPane.showMessageDialog(messageFrame,"邮件已成功发出!"); } catch (UnknownHostException ex){ JOptionPane.showMessageDialog( messageFrame,ex.toString(),"Error", JOptionPane.ERROR_MESSAGE); } catch (IOException ee){ JOptionPane.showMessageDialog( messageFrame,ee.toString(),"Error", JOptionPane.ERROR_MESSAGE); } finally{ try{ clientSocket.close(); messageFrame.addMessageToMessageFrame("连接断开"); } catch(IOException ioe){ JOptionPane.showMessageDialog( messageFrame,ioe.toString(),"Error", JOptionPane.ERROR_MESSAGE); messageFrame.addMessageToMessageFrame("连接断开"); } }这是协议对话部分//服务器的反应, boolean responseFromServer(String cmd,String errorMessage){ String responseSentence; try { responseSentence = new String(inData.readLine()); if (!responseSentence.startsWith(cmd)) { return false; } } catch (IOException ioex) { return false; } while(responseSentence.startsWith("-",3)){ try{ responseSentence = new String(inData.readLine()); } catch(IOException ioeX){ return false; } } return true; }//向服务器发送一个命令 boolean sendToServer(String msg){ try{ outToServer.writeBytes(msg+'\r'+'\n'); } catch(IOException ioex){ return false; } return true; }} java静态常量的值是什么意思? Java实现ATM重启关机操作 小程序 Java自动输入 内存问题 java终的一个小问题 这是http://java.sun.com/j2se/1.4.2/docs/api/提供的源程序,我有2个问题 JAVAIO 有对输入法感兴趣的吗? jdbc-odbc 连接数据库的问题 java I/O类与包装器 请问各位有关Assertion机制的两个问题,马上给分!!!
prop.setProperty("mail.transport.protocol","smtp");
prop.setProperty("mail.smtp.host","smtp.sina.com.cn");//Sina的好像是这个地址吧
prop.setProperty("mail.smtp.auth","true");Session session = Session.getInstance(prop,
new Authenticator() {
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication("YourUserNameInSina","YourPassword");
}
});
Transport trans = session.getTransport();
//sendmessage,使用trans来传送,不要用静态方法
trans.close();如果是其他smtp服务器你换一下上面得代码就行了
能发到我邮箱里面嘛?[email protected]
if(!sendToServer("AUTH LOGIN"))
return;
if(!responseFromServer("334",
"未知错误,也许你的服务器不需要身份验证!"))
return;
user=new BASE64Encoder().encode(user.getBytes());
if(!sendToServer(user))
return;
if(!responseFromServer("334",
"注册失败,无效的用户名!"))
return;
password=new BASE64Encoder().encode(password.getBytes());
if(!sendToServer(password))
return;
if(!responseFromServer("235",
"注册失败,请检查你的用户名和密码!"))
return;
}
我自己做的smtp客户端的一部分代码
能不能再给全一点啊?
谢谢!
try{
clientSocket=new Socket(host,port); outToServer=
new DataOutputStream(
clientSocket.getOutputStream());
inData=
new BufferedReader(
new InputStreamReader(clientSocket.getInputStream())); if(!responseFromServer("220","无法解析主机"))
return;
if(!sendToServer("EHLO stmp.taohoo.com"))
return;
if(!responseFromServer("250","未知错误,请查看LOG!"))
return;
if(authorization==true){
if(!sendToServer("AUTH LOGIN"))
return;
if(!responseFromServer("334",
"未知错误,也许你的服务器不需要身份验证!"))
return;
user=new BASE64Encoder().encode(user.getBytes());
if(!sendToServer(user))
return;
if(!responseFromServer("334",
"注册失败,无效的用户名!"))
return;
password=new BASE64Encoder().encode(password.getBytes());
if(!sendToServer(password))
return;
if(!responseFromServer("235",
"注册失败,请检查你的用户名和密码!"))
return;
}
if(!sendToServer("MAIL FROM:<"+mailfrom+">"))
return;
if(!responseFromServer("250","错误!可能你还没有注册,或者输入的发件人地址不正确"))
return;
if(!sendToServer("RCPT TO:<"+mailto+">"))
return;
if(!responseFromServer("25","错误!无效的发件人地址"))//回复应该是250或者251
return;
if(!sendToServer("DATA"))
return;
if(!responseFromServer("354","未知错误,请查看LOG!"))
return;
if(!sendToServer("To:"+mailto))
return;
if(!sendToServer("From:"+mailfrom))
return;
if(!sendToServer("Subject:"+subject))
return;
if(!sendToServer(content))
return;
String msgEnd=new String(String.valueOf("."));
if(!sendToServer(msgEnd))
return;
if(!responseFromServer("250","未知错误!"))
return;
if(!sendToServer("QUIT"))
return;
if(!responseFromServer("221","未知错误!"))
return;
inData.close();
outToServer.close();
clientSocket.close();
JOptionPane.showMessageDialog(messageFrame,"邮件已成功发出!");
}
catch (UnknownHostException ex){
JOptionPane.showMessageDialog(
messageFrame,ex.toString(),"Error",
JOptionPane.ERROR_MESSAGE);
}
catch (IOException ee){
JOptionPane.showMessageDialog(
messageFrame,ee.toString(),"Error",
JOptionPane.ERROR_MESSAGE);
}
finally{
try{
clientSocket.close();
messageFrame.addMessageToMessageFrame("连接断开");
}
catch(IOException ioe){
JOptionPane.showMessageDialog(
messageFrame,ioe.toString(),"Error",
JOptionPane.ERROR_MESSAGE);
messageFrame.addMessageToMessageFrame("连接断开");
}
}这是协议对话部分
//服务器的反应,
boolean responseFromServer(String cmd,String errorMessage){
String responseSentence;
try {
responseSentence = new String(inData.readLine());
if (!responseSentence.startsWith(cmd)) {
return false;
}
}
catch (IOException ioex) {
return false;
} while(responseSentence.startsWith("-",3)){
try{
responseSentence = new String(inData.readLine()); }
catch(IOException ioeX){
return false;
} }
return true;
}//向服务器发送一个命令
boolean sendToServer(String msg){
try{
outToServer.writeBytes(msg+'\r'+'\n');
}
catch(IOException ioex){
return false;
}
return true;
}}