⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 simplesmtp.java

📁 JSP核心技术源代码,和本站的JSP核心技术分析,可以合用
💻 JAVA
字号:
//SimpleSmtp.java 

package com.mail; 

import java.io.*; 
import java.net.Socket; 
import java.util.*; 

public class SimpleSmtp{ 
private Socket so; 
private BufferedReader recv; 
private PrintWriter send; 
private String from; 
private String to; 
private String domain; 
private Vector x_set; 
private Vector body; 
private String DELIMETER; 

public SimpleSmtp(){ 
so = null; 
recv = null; 
send = null; 
from = ""; 
to = ""; 
domain = ""; 
x_set = new Vector(); 
body = new Vector(); 

DELIMETER = ""; 
DELIMETER = getId(); 
} 

//得到一个随机数字符串 
private String getId(){ 
String s = ""; 
long l = System.currentTimeMillis(); 
Random random = new Random(); 
s = String.valueOf(l); 
for(int i = 1; i <= 6; i++) 
s = s + (int)(1.0D + 6D * random.nextDouble()); 
return s; 
} 

//连接smtp主机,返回值为0则失败,为1成功 
public int open(String s, int i){ 
try{ 
so = new Socket(s, i); 
send = new PrintWriter(so.getOutputStream(), true); 
recv = new BufferedReader(new InputStreamReader(so.getInputStream())); 
String s1 = recv.readLine(); 
char c = s1.charAt(0); 
if((c == '4') | (c == '5')) 
return 0; 
}catch(Exception _ex){ 
return 0; 
} 
return 1; 
} 

//断开与smtp主机的连接,返回值为0则失败,为1成功 
public int close(){ 
int i = 0; 
try{ 
i += sendString("QUIT"); 
so.close(); 
}catch(Exception _ex){ 
return 0; 
} 
return i == 0 ? 1 : 0; 
} 

//发送命令 返回值为0则失败,为1成功 
private int sendString(String s){ 
String s1 = ""; 
try{ 
send.println(s); 
s1 = recv.readLine(); 
}catch(Exception _ex){ 
return 0; 
} 
if(s1.length() == 0) 
return 0; 
char c = s1.charAt(0); 
return !((c == '4') | (c == '5')) ? 1 : 0; 
} 

//设置域 
public void setDomain(String s){ 
domain = s; 
} 

//设置邮件头信息 
public void addHeader(String s, String s1){ 
x_set.addElement(s); 
x_set.addElement(s1); 
} 

//删除邮件头信息 
public void removeHeader(String s){ 
int i = x_set.indexOf(s); 
if(i >= 0){ 
x_set.removeElementAt(i + 1); 
x_set.removeElementAt(i); 
} 
} 

//清空邮件头信息 
public void clearHeaders(){ 
x_set.removeAllElements(); 
} 

//设置发信人 
public void setFrom(String s){ 
from = s; 
x_set.addElement("From"); 
x_set.addElement(s); 
} 

//设置收信人 
public void setTo(String s){ 
to = s; 
x_set.addElement("To"); 
x_set.addElement(s); 
} 

//加正文信息 
public void addData(String s){ 
body.addElement("1"); 
body.addElement(s); 
} 

//加文本信息 
public void addTextFile(String s){ 
body.addElement("2"); 
body.addElement(s); 
} 

//清除正文数据 
public void clearData(){ 
body.removeAllElements(); 
} 

//发送邮件 
public int transmit(){ 
boolean flag = true; 
//domain 
if(domain.length() != 0){ 
int i = sendString("HELO " + domain); 
if(i != 1) 
return 0; 
} 
//from 
if(from.length() != 0){ 
int j = sendString("MAIL FROM:" + from); 
if(j != 1) 
return 0; 
} 
//to 
if(to.length() != 0){ 
for(StringTokenizer stringtokenizer = new StringTokenizer(to, ", \t"); 
stringtokenizer.hasMoreTokens();){ 
int k = sendString("RCPT TO:" + stringtokenizer.nextToken()); 
if(k != 1) 
return 0; 
} 

} 

if(sendString("DATA") != 1) 
return 0; 

//邮件头信息 
for(int l = 0; l < x_set.size(); l += 2){ 
String s = (String)x_set.elementAt(l); 
send.println(s + ": " + x_set.elementAt(l + 1)); 
} 

if(x_set.indexOf("Date") < 0) 
send.println("Date: " + (new Date()).toString()); 

if(x_set.indexOf("Mime-Version") < 0) 
send.println("Mime-Version: 1.0"); 

send.println("X-Mailer: jspDev,the best jsp tech forum"); 

try{ 
send.print("\n\n"); 
int i1 = 0; 
//正文 
for(; i1 < body.size(); i1 += 2){ 
String s1 = (String)body.elementAt(i1); 
if(s1.equals("1")) 
send.println((String)body.elementAt(i1 + 1)); 
else 
if(s1.equals("2")) 
sendTextFile((String)body.elementAt(i1 + 1)); 
} 

return sendString("\n.\n"); 
}catch(Exception _ex){ 
return 0; 
} 
} 

private void sendTextFile(String s){ 
try{ 
BufferedReader bufferedreader = 
new BufferedReader(new InputStreamReader(new FileInputStream(s))); 
String s1; 
while((s1 = bufferedreader.readLine()) != null) 
send.println(s1); 
bufferedreader.close(); 
return; 
}catch(Exception _ex){ 
return; 
} 
} 

} 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -