发送邮件在我们的日常工作当中还是比较常用的。那么,在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: <发送者邮箱@163.com> 250 Mail Ok rcpt to: <接收者邮箱@163.com> 250 Mail Ok data 354 End data with <CR><LF>.<CR><LF> 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:<" + SendUser + ">"); System.out.println(br.readLine()); pw.println("rcpt to:<" + ReceiveUser + ">"); 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工具网。
推荐阅读: