【Java开源代码栏目提醒】:以下是网学会员为您推荐的Java开源代码-SMTPSenderDemo.java,希望本篇文章对您学习有所帮助。
import java.net.*;
import java.io.*;
import java.util.*;
public class SMTPSenderDemo{
Socket socket=null;
PrintWriter outData=null;
BufferedReader inData=null;
String smtpServer="";
String user="";
String pass="";
String from="";
String LINEFEED="\r\n";
boolean isNeedAuthLogin=false;
Vector to=new Vector();
public static void main(String[] args){
SMTPSenderDemo smtp=new SMTPSenderDemo();
smtp.setMailServer("mail.sohu.com");
smtp.setMailFrom("3710167@qq.com","user","pwd");
smtp.addMailTo("3710167@qq.com");
if(smtp.send("hello","这是一个测试!")){
System.out.println("邮件发送成功!");
}else
System.out.println("邮件发送失败!");
}
//设置邮件服务器
public void setMailServer(String s){
smtpServer=s;
}
//封装用户和密码
public void setMailFrom(String s,String uid,String pwd){
this.from=s;
this.user=uid;
this.pass=pwd;
this.isNeedAuthLogin=(
this.user!=null&&this.pass!=null
&&!this.user.equals("")&&!this.pass.equals(""));
}
public boolean addMailTo(String mailAddr){
to.addElement(mailAddr);
return true;
}
//发送邮件,发送成功返回true
public boolean send(String subject,String content){
try{
if(smtpServer==null||smtpServer.equals(""))
return false;
if(from==null||from.equals(""))
return false;
if(to.size()<1)
return false;
socket=new Socket(smtpServer,25);
outData=new PrintWriter(socket.getOutputStream());
inData=new BufferedReader(new InputStreamReader(
socket.getInputStream()));
//与邮件连接成功
readResponse("220");
//HELO host
sendRequest("HELO "+smtpServer+LINEFEED);
readResponse("250");
if(isNeedAuthLogin){
//AUTH LOGIN
sendRequest("AUTH LOGIN"+LINEFEED);
readResponse("334");
//USERNAME:
sendRequest(new String(user)
+LINEFEED);
readResponse("334");
//PASSWORD:
sendRequest(new String(pass)+LINEFEED);
readResponse("235");
}
//MAIL FROM:<..>
sendRequest("MAIL FROM:<"+from+">"+LINEFEED);
readResponse("250");
//RCPT TO:<..>
for(Enumeration enu=to.elements();enu.hasMoreElements();){
String to1=(String)enu.nextElement();
sendRequest("RCPT To:<"+to1+">"+LINEFEED);
readResponse("250");
}
//DATA
sendRequest("DATA"+LINEFEED);
readResponse("354");
//邮件内容
StringBuffer s1=new StringBuffer(
"From: <"+from+">"+LINEFEED);
s1.append("To: <"+to+">"+LINEFEED);
s1.append("Subject: "+subject+LINEFEED);
s1.append("Date: "+
new java.util.Date().toLocaleString()+LINEFEED);
s1.append("Content-Type: text/plain;charset=\"GB2312\""
+LINEFEED);
s1.append(LINEFEED);
s1.append(content);
s1.append(LINEFEED+"."+LINEFEED);
//发送邮件
sendRequest(s1.toString());
readResponse("250");
//QUIT退出
sendRequest("QUIT"+LINEFEED);
readResponse("221");
try{
inData.close();
inData=null;
outData.close();
outData=null;
socket.close();
socket=null;
}catch(Exception ex){}
}catch(Exception e){
return false;
//e.printStackTrace();
}
return true;
}
//解析从邮件服务器发送回来的响应码
private void readResponse(String cmd)throws Exception{
String tmp=inData.readLine();
if(tmp.startsWith(cmd));
//System.out.println(" [S:]"+tmp);
else
throw new Exception(
"##########邮件发送失败!##########"+tmp);
while(tmp.startsWith(cmd+"-"))
tmp=inData.readLine();
}
//发送SMTP请求码
private void sendRequest(String msg){
//System.out.print("***[C:]"+msg);
outData.write(msg);
outData.flush();
}
public void close(){
try{
inData.close();
inData=null;
outData.close();
outData=null;
socket.close();
socket=null;
}catch(Exception ex){}
}
}
上一篇:
smtpsend.java
下一篇:
高职院理实一体信息技术论文