发送邮件在我们的日常工作当中还是比较常用的。那么,在java中以cmd和stamp的方式应该怎么发送邮件呢?
首先说一下需要掌握的一些基本知识:1.打开talent客户端;2.掌握在cmd/stamp下邮件的发送;3.发送者邮箱开启客户端授权码;4.掌握Base64编码;5.最重要的是,会写代码。
接下来分别为大家概述。
1.掌握在cmd下实现邮件发送。首先开启Telnet客户端(控制面板/程序/打开或关闭windows功能/选择Telnet客户端)操作图片如下:
然后学会在cmd下发送邮件的操作流程,代码如下:telnet smtp .163.com 25
220
helo myxulinjie
250 ok
auth login
334 dXNlcm5hbWU6
**
* (这里输入发送者邮箱的Base64码)
334 UGFzc3dvcmQ6
**
* (这里输入发送者授权码的密码, 注意不是邮箱密码)
235 Authentication successful
mail from:
250 Mail Ok
rcpt to:
250 Mail Ok
data
354 End data with .
to: 接收者邮箱@163.com
from: 发送者邮箱@163.com
subject:test telnet smtp mail
what is your name?
.
250 Mail OK.........
rset
250 OK
quit
221 Bye
2.发送者邮箱开启客户端授权码,用163邮箱举例,图片操作如下:
3.用stamp发送邮件,这个是在CC的Base64编解码工具类的基础上进行的,具体操作如下:package Base64Demo;
import org.apache.commons.codec.binary.Base64;
/*
*基于commons-codec-1.11
*/
public class Base64Utile_cc
{
/*
*加密过程
*/
public static String EncodeBase64(byte[] data)
{
Base64 en = new Base64();
String str = en.encodeBase64String(data);
return str;
}
/*
*解密过程
*/
public static String DecodeBase64(String str)
{
Base64 de = new Base64();
byte[] ResultBase = de.decodeBase64(str);
String str2 = new String(ResultBase);
return str2;
}
}package Base64Demo;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.net.Socket;
public class SMTPDEMO
{
public static void main(String[] args)
{
/*
*用户名和密码
*/
String SendUser = "ash_ali@163.com";
String SendPassword = "xlj932834897";
String ReceiveUser = "ash_ali01@163.com";
/*
*对用户名和密码进行Base64编码
*/
String UserBase64 = Base64Utile_cc.EncodeBase64(SendUser.getBytes());
String PasswordBase64 = Base64Utile_cc.EncodeBase64(SendPassword.getBytes());
try
{
/*
*远程连接smtp.163.com服务器的25号端口
*并定义输入流和输出流(输入流读取服务器返回的信息、输出流向服务器发送相应的信息)
*/
Socket socket = new Socket("smtp.163.com", 25);
InputStream inputStream = socket.getInputStream(); //读取服务器返回信息的流
InputStreamReader isr = new InputStreamReader(inputStream); //字节解码为字符
BufferedReader br = new BufferedReader(isr); //字符缓冲
OutputStream outputStream = socket.getOutputStream(); //向服务器发送相应信息
PrintWriter pw = new PrintWriter(outputStream, true); //true代表自带flush
System.out.println(br.readLine());
/*
*向服务器发送信息以及返回其相应结果
*/
//helo
pw.println("helo myxulinjie");
System.out.println(br.readLine());
//auth login
pw.println("auth login");
System.out.println(br.readLine());
pw.println(UserBase64);
System.out.println(br.readLine());
pw.println(PasswordBase64);
System.out.println(br.readLine());
//Set "mail from" and "rect to"
pw.println("mail from:");
System.out.println(br.readLine());
pw.println("rcpt to:");
System.out.println(br.readLine());
//Set "data"
pw.println("data");
System.out.println(br.readLine());
//正文主体(包括标题,发送方,接收方,内容,点)
pw.println("subject:myxulinjie");
pw.println("from:" + SendUser);
pw.println("to:" + ReceiveUser);
pw.println("Content-Type: text/plain;charset=\"gb2312\""); //设置编码格式可发送中文内容
pw.println();
pw.println("大家好,欢迎来到林杰的专栏");
pw.println(".");
pw.print("");
System.out.println(br.readLine());
/*
*发送完毕,中断与服务器连接
*/
pw.println("rset");
System.out.println(br.readLine());
pw.println("quit");
System.out.println(br.readLine());
}
catch (IOException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
以上就是关于如何在java中用cmd和stamp方式发送邮件的具体操作流程。想要了解更多java程序代码例子以及常见问题,敬请关注奇Q工具网。
推荐阅读: