使用Socket发送电子邮件

王朝other·作者佚名  2008-05-31
窄屏简体版  字體: |||超大  

import Java.io.BufferedReader;

import java.io.FileReader;

import java.io.IOException;

import java.io.InputStream;

import java.io.InputStreamReader;

import java.io.OutputStream;

import java.io.OutputStreamWriter;

import java.io.PrintWriter;

import java.net.InetAddress;

import java.net.Socket;

import java.net.UnknownHostException;

public class SMTPDemo {

public static void main(String args[]) throws IOException,

UnknownHostException {

String msgFile = "file.txt";

String from = "java2s@java2s.com";

String to = "yourEmail@yourServer.com";

String mailHost = "yourHost";

SMTP mail = new SMTP(mailHost);

if (mail != null) {

if (mail.send(new FileReader(msgFile), from, to)) {

System.out.println("Mail sent.");

} else {

System.out.println("Connect to SMTP server failed!");

}

}

System.out.println("Done.");

}

static class SMTP {

private final static int SMTP_PORT = 25;

InetAddress mailHost;

InetAddress localhost;

BufferedReader in;

PrintWriter out;

public SMTP(String host) throws UnknownHostException {

mailHost = InetAddress.getByName(host);

localhost = InetAddress.getLocalHost();

System.out.println("mailhost = " + mailHost);

System.out.println("localhost= " + localhost);

System.out.println("SMTP constrUCtor done\n");

}

public boolean send(FileReader msgFileReader, String from, String to)

throws IOException {

Socket smtpPipe;

InputStream inn;

OutputStream outt;

BufferedReader msg;

msg = new BufferedReader(msgFileReader);

smtpPipe = new Socket(mailHost, SMTP_PORT);

if (smtpPipe == null) {

return false;

}

inn = smtpPipe.getInputStream();

outt = smtpPipe.getOutputStream();

in = new BufferedReader(new InputStreamReader(inn));

out = new PrintWriter(new OutputStreamWriter(outt), true);

if (inn == null outt == null) {

System.out.println("Failed to open streams to socket.");

return false;

}

String initialID = in.readLine();

System.out.println(initialID);

System.out.println("HELO " + localhost.getHostName());

out.println("HELO " + localhost.getHostName());

String welcome = in.readLine();

System.out.println(welcome);

System.out.println("MAIL From:<" + from + ">");

out.println("MAIL From:<" + from + ">");

String senderOK = in.readLine();

System.out.println(senderOK);

System.out.println("RCPT TO:<" + to + ">");

out.println("RCPT TO:<" + to + ">");

String recipientOK = in.readLine();

System.out.println(recipientOK);

System.out.println("DATA");

out.println("DATA");

String line;

while ((line = msg.readLine()) != null) {

out.println(line);

}

System.out.println(".");

out.println(".");

String acceptedOK = in.readLine();

System.out.println(acceptedOK);

System.out.println("QUIT");

out.println("QUIT");

return true;

}

}

}

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航