初学JAVA,第一次写用户界面,实现发送邮件,很多不足,希望大家能指出,谢谢~~~
下面是服务程序
import java.net.*;
import java.io.*;
public class MailSenderWithGUI{
private String smtpServer="smtp.cauc.edu.cn";//我校SMTP邮件服务器的主机名
private int port=587;//我校SMTP邮件服务器的端口
private String senderadd="";//发送者邮箱地址
private String username="";//发送者用户名
private String password="";//邮箱密码
private String receiveadd="";//收件者邮箱地址
private String title="";//邮件标题
private String message="";//邮件正文
private Message msg;//邮件类
public String ans="";//通信信息
//含参构造函数,传入控件接收的数据,去掉了主函数
public MailSenderWithGUI
(String senderadd,String username,String password,
String receiveadd,String title,String message){
this.senderadd=senderadd;
this.username=username;
this.password=password;
this.receiveadd=receiveadd;
this.title=title;
this.message=message;
}
public MailSenderWithGUI(){}
public void sendMail(){//发送邮件,去掉了参数
Message msg=new Message(senderadd,receiveadd,title,message);
Socket socket=null;//创建未连接的套接字
try{
socket = new Socket(smtpServer,port);//连接到邮件服务器
BufferedReader br =getReader(socket);//套接字缓冲字符输入流
PrintWriter pw = getWriter(socket);//套接字缓冲字符输出流
String localhost= InetAddress.getLocalHost().getHostName();//客户主机的名字
//对用户名和口令进行base64编码
username = new BASE64Encoder().encode(username.getBytes());
password = new BASE64Encoder().encode(password.getBytes());//对口令进行base64编码
//表示通信过程的字符串添加数据
ans=ans.concat(sendAndReceive(null,br,pw)+"\n");//接收服务器的响应数据
ans=ans.concat(sendAndReceive("HELO " + localhost,br,pw)+"\n");
ans=ans.concat(sendAndReceive("AUTH LOGIN",br,pw)+"\n");//认证命令
ans=ans.concat(sendAndReceive(username,br,pw)+"\n");//用户名
ans=ans.concat(sendAndReceive(password,br,pw)+"\n");//口令
ans=ans.concat(sendAndReceive("MAIL FROM: " + msg.from+"",br,pw)+"\n");
ans=ans.concat(sendAndReceive("RCP