📄 smtpsender.java
字号:
/*any question contact me:
* Email:linlichao@163.com;
* Homepage:http://www.ehawa.com。*/
import java.net.*;
import java.io.*;
import java.util.*;
import java.text.*;
import org.apache.commons.codec.net.BCodec;
// import org.apache.commons.codec.binary.Base64;
// import org.apache.commons.codec.*;
// import org.apache.commons.codec.language.*;
public class SMTPSender {
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) {
SMTPSender smtp = new SMTPSender();
smtp.setMailServer("mails.gucas.ac.cn");
smtp.setMailFrom("Client", "laishenlu05", "7012203");
smtp.addMailTo("mails.gucas.ac.cn");
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;
}
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);
socket = new Socket("210.77.16.3", 25);
// String errstr = "";
// socket = fsockopen("mails.gucas.ac.cn",25, -1, errstr,3000);
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(new BCodec().encode(user))
+ LINEFEED);
readResponse("334");
// PASSWORD:
sendRequest(new String(new BCodec().encode(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);
// Date date = new Date(Calendar.getInstance().toString());
Date date = new Date();
s1.append("Date: " + DateFormat.getInstance().format(date)
+ 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;
} catch (Exception ex) {
}
try {
outData.close();
outData = null;
} catch (Exception ex) {
}
try {
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();
}
private void sendRequest(String msg) {
// System.out.print("***[C:]"+msg);
outData.write(msg);
outData.flush();
}
public void close() {
try {
inData.close();
inData = null;
} catch (Exception ex) {
}
try {
outData.close();
outData = null;
} catch (Exception ex) {
}
try {
socket.close();
socket = null;
} catch (Exception ex) {
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -