您的位置:首页 > 编程语言 > Java开发

java 发送邮件

2013-07-29 17:06 162 查看
package com.duoduo.test;

import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.net.InetAddress;
import java.net.Socket;
import java.net.UnknownHostException;
import java.util.Scanner;

import com.duoduo.std.StdOut;

public class EmailTest {
private String host = "10.1.243.241";
private int port = 25;
private String from = "sx_9981@ttc.neusoft.com";
private String to = "sx_9982@ttc.neusoft.com";
private String data = "test";
private Scanner in;
private PrintWriter out;
private final String LINEFEED="\r\n";

public void sendMail() {
try {
Socket s = new Socket(host, port);
try {
InputStream inStream = s.getInputStream();
OutputStream outStream = s.getOutputStream();
in = new Scanner(inStream);
out = new PrintWriter(outStream, true);
String initialID = in.nextLine();
// 220
StdOut.println(initialID);

String hostName = InetAddress.getLocalHost().getHostName();
StdOut.println(hostName);
send("HELO " + hostName);

// 250
String welcome = in.nextLine();
StdOut.println("welcome"+welcome);

send("MAIL From:<" + from + ">");

// 250
String senderOK = in.nextLine();
StdOut.println("senderOK:"+senderOK);

send("RCPT TO:<" + to + ">");
// 250
String recipientOK = in.nextLine();
System.out.println("recipientOK:"+recipientOK);

send("DATA");
// 354
String acceptedOK = in.nextLine();
System.out.println("acceptedOK:"+acceptedOK);

StringBuffer s1=new StringBuffer("From:<"+from+">"+LINEFEED);

s1.append("To:<"+to+">"+LINEFEED);
s1.append("Subject: "+"test"+LINEFEED);
s1.append("Date: "+new java.util.Date().toLocaleString()+LINEFEED);
s1.append("Content-Type: text/plain;charset=\"GB18030\""+LINEFEED);
s1.append(LINEFEED);
s1.append(data);
s1.append(LINEFEED);//发送

send(s1.toString());
send(".");
// 250
String dataOK = in.nextLine();
System.out.println("dataOK:"+dataOK);
send("QUIT");
// 221
String quitOK = in.nextLine();
StdOut.println("quitOK:"+quitOK);
} finally {
s.close();
}
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}

}

public void send(String msg) {
out.print(msg.replaceAll("\n", LINEFEED));
out.print(LINEFEED);
out.flush();
StdOut.print(msg.replaceAll("\n", LINEFEED));
StdOut.print(LINEFEED);
}

public static void main(String args[]) {
EmailTest email = new EmailTest();
email.sendMail();
}

}


stdout 换为System.out即可,from done,to和subject现在还显示在正文里
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: