在java中怎么用cmd发送邮件?stamp怎么发送?

BSO 2020-09-02 10:44:51 java常见问答 5293

发送邮件在我们的日常工作当中还是比较常用的。那么,在java中以cmd和stamp的方式应该怎么发送邮件呢?

首先说一下需要掌握的一些基本知识:1.打开talent客户端;2.掌握在cmd/stamp下邮件的发送;3.发送者邮箱开启客户端授权码;4.掌握Base64编码;5.最重要的是,会写代码。

接下来分别为大家概述。

1.掌握在cmd下实现邮件发送。首先开启Telnet客户端(控制面板/程序/打开或关闭windows功能/选择Telnet客户端)操作图片如下:

实现cmd发送邮件

然后学会在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邮箱举例,图片操作如下:

实现cmd发送邮件

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();
        }
    }
}

用stamp发送邮件

以上就是关于如何在java中用cmd和stamp方式发送邮件的具体操作流程。想要了解更多java程序代码例子以及常见问题,敬请关注奇Q工具网。

推荐阅读:

在java中如何分离邮件内容?发送简单邮件实例

java中发送邮件的功能有哪些内容?如何发送双重邮件?

在java中怎么用TLS发送邮件?如何用SSL发送?