java邮件收发程序

2019-04-22 19:00

import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.IOException;

import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.net.Socket;

import java.net.SocketException;

import java.net.UnknownHostException; import java.util.StringTokenizer;

public class SMTPClient {

private boolean debug = true;

BASE64Encoder encode = new BASE64Encoder();// 自定义BASE64Encoder工具类用于加密字符串

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

MailMessage message = new MailMessage();

message.setFrom(\发件人

message.setTo(\多个收件人地址间用逗号隔开 String server = \邮件服务器 message.setSubject(\VA MAIL测试\邮件主题 message.setContent(\你好!这里是系统发出的JAVA MAIL测试,请勿回复。\邮

件内容

message.setDataFrom(\发件人,在邮件的发件人栏目中显示 message.setDataTo(\收件人,在邮件的收件人栏目中显示 message.setUser(\登陆的邮箱账号

message.setPassword(\登陆邮箱的密码,建议自己保密好,公开传播会泄密

SMTPClient smtp = new SMTPClient(server, 25); boolean flag;

flag = smtp.sendMail(message, server);

if (flag) { System.out.println(\邮件发送成功!\ } else { System.out.println(\邮件发送失败!\ } }

private Socket socket;

public SMTPClient(String server, int port) throws UnknownHostException, IOException { try {

socket = new Socket(server, 25); } catch (SocketException e) {

System.out.println(e.getMessage()); } catch (Exception e) { e.printStackTrace();

} finally {

System.out.println(\已经建立连接!\ } }

// 注册到邮件服务器

public void helo(String server, BufferedReader in, BufferedWriter out) throws IOException {

int result;

result = getResult(in);

// 连接上邮件服务后,服务器给出220应答 if (result != 220) {

throw new IOException(\连接服务器失败\ }

result = sendServer(\ // HELO命令成功后返回250

if (result != 250) {

throw new IOException(\注册邮件服务器失败!\ } }

private int sendServer(String str, BufferedReader in, BufferedWriter out) throws IOException { out.write(str); out.newLine(); out.flush();

if (debug) {

System.out.println(\已发送命令:\ }

return getResult(in); }

public int getResult(BufferedReader in) { String line = \ try {

line = in.readLine();

if (debug) {

System.out.println(\服务器返回状态:\ }

} catch (Exception e) {

e.printStackTrace(); }

// 从服务器返回消息中读出状态码,将其转换成整数返回 StringTokenizer st = new StringTokenizer(line, \ return Integer.parseInt(st.nextToken()); }

public void authLogin(MailMessage message, BufferedReader in, BufferedWriter out) throws IOException { int result;

result = sendServer(\ if (result != 334) {

throw new IOException(\用户验证失败!\ }

result = sendServer(encode.encode(message.getUser().getBytes()), in, out); if (result != 334) {

throw new IOException(\错误!\ }

result = sendServer(encode.encode(message.getPassword().getBytes()), in, out); if (result != 235) {

throw new IOException(\验证失败!\ } }

// 开始发送消息,邮件源地址

public void mailFrom(String source, BufferedReader in, BufferedWriter out) throws IOException { int result;

result = sendServer(\ if (result != 250) {

throw new IOException(\指定源地址错误\ } }

// 设置邮件收件人。多邮件发送用\隔开

public void rcpt(String touchman, BufferedReader in, BufferedWriter out) throws IOException {

//String[] mailList = touchman.split(\ /*if (mailList.length > 1) {

for (String touch : mailList) {

connectionServer(touch,in,out); } }else */

connectionServer(touchman,in,out); }

private void connectionServer(String touch, BufferedReader in, BufferedWriter out) throws IOException { int result;

result = sendServer(\ if (result != 250) { throw new IOException(\指定目的地址错误!\ } }

// 邮件体

public void data(String from, String to, String subject, String content, BufferedReader in, BufferedWriter out) throws IOException { int result;

result = sendServer(\TA\ // 输入DATA回车后,若收到354应答后,继续输入邮件内容 if (result != 354) {

throw new IOException(\不能发送数据\ }

out.write(\ out.newLine(); out.write(\ out.newLine();

out.write(\ out.newLine(); out.newLine();

out.write(content); out.newLine();

// 句号加回车结束邮件内容输入 result = sendServer(\

System.out.println(result); if (result != 250) {

throw new IOException(\发送数据错误\ } }

// 退出

public void quit(BufferedReader in, BufferedWriter out) throws IOException { int result;

result = sendServer(\

if (result != 221) {

throw new IOException(\未能正确退出\ } }

// 发送邮件主程序

public boolean sendMail(MailMessage message, String server) {

try {

BufferedReader in = new BufferedReader(new InputStreamReader(socket .getInputStream()));

BufferedWriter out = new BufferedWriter(new OutputStreamWriter( socket.getOutputStream())); helo(server, in, out);// HELO命令

authLogin(message, in, out);// AUTH LOGIN命令 mailFrom(message.getFrom(), in, out);// MAIL FROM rcpt(message.getTo(), in, out);// RCPT

data(message.getDataFrom(), message.getDataTo(), message .getSubject(), message.getContent(), in, out);// DATA quit(in, out);// QUIT } catch (Exception e) { e.printStackTrace(); return false;

}

return true; } }

/**

* BASE64Encoder加密类 */

//package mail; /**

* @author Daniel Cheng * */

public class BASE64Encoder {

private static char[] codec_table = { 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'a', 'b', 'c', 'd', 'e', 'f', 'g',


java邮件收发程序.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:七年级英语上学期Unit5试卷 - 4

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: