第一步:连接邮箱服务器地址;
第二步:和服务器打招呼;
第三步:验证登陆;
第四步:输入用户名;
第五步:输入密码;
第六步:输入邮件发送的邮箱;
第七步:输入收件人邮箱;
第八步:输入“data”;
第九步:编写邮件内容;
第十步:输入“.\r\n”;
这里只描述了关于发送邮件的一些步骤,对于邮箱的邮件的列表的获取、邮件的接受等等功能就不一一赘述了。
java 刚刚起步,正好要做一个作业,顺便写一下,和大家一起交流一下。
代码:
package mail.entity
class: mail
public class mail {
private String data = "";
private String from = "";
private String subject = "";
private String content = "";
public mail(String data, String from, String subject) {
super();
this.data = data;
this.from = from;
this.subject = subject;
myInit();
}
private void myInit() {
content = "from: <" + this.from + ">\r\n";
content += "subject: " + this.subject + "\r\n\r\n";
content += this.data + "\r\n";
content += ".\r\n";
}
public String getContent() {
return content;
}
public String getData() {
return data;
}
public String getFrom() {
return from;
}
public String getSubject() {
return subject;
}
}
class: user
public class user {
private String sendTo = "";
private String userName = "";
private String userPassword = "";
public user (String sendTo, String userName, String userPassword) {
super();
this.sendTo = sendTo;
this.userName = userName;
this.userPassword = utility.transformToBASE64(userPassword);
}
public String getSendTo() {
return sendTo;
}
public String getUserName() {
return userName;
}
public String getUserPassword() {
return userPassword;
}
}
package mail.utility
class: utility
public class utility {
public static final String hello = "helo 163";
public static final String login = "auth login";
public static final String server = "smtp.163.com";
public static final int port = 25;
/**
* transform a string to BASE64
* @param str
* @return
*/
public static String transformToBASE64(String str) {
String result = "";
BASE64Encoder encoder = new BASE64Encoder();
result = encoder.encode(str.getBytes());
return result;
}
}
package mail.send
class : sendMial
public class sendMail {
private user u;
private mail m;
private PrintWriter output = null;
private Socket socket = null;
public sendMail(user u, mail m) {
super();
this.u = u;
this.m = m;
try {
myInit();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
private void myInit() throws Exception {
socket = new Socket(utility.server, utility.port);
output = new PrintWriter(new OutputStreamWriter(socket.getOutputStream()));
}
public boolean send() {
boolean yes = false;
try {
// hello 163
send(utility.hello);
// 验证登陆
send(utility.login);
// 用户名
send(utility.transformToBASE64(u.getUserName()));
// 密码
send(u.getUserPassword());
// 发件人
send("mail from: <" + u.getUserName() + "@163.com>");
// 收件人
send("rcpt to: <" + u.getSendTo() + ">");
// 内容
send("data");
send(m.getContent());
// 释放资源
socket.close();
output.close();
yes = true;
System.out.println("Done!");
} catch (Exception e) {
// TODO Auto-generated catch block
return false;
}
return yes;
}
private void send(String str) {
output.println(str);
output.flush();
}
}
差不多了,就写这几个类吧,对于类的抽取,包的划分,类中成员变量的设置等等问题我还不是很明白,总感觉自己写的程序结构不是很好,如果大家有什么好的建议,欢迎交流。
------一个小程序员wym