java 邮件客户端 smtp_java网络编程三:基于SMTP的邮件发送客户端
1、SMTP简介
2、发送过程
3、源代码示例
package demo.net;
import java.awt.BorderLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.IOException;
import java.io.PrintWriter;
import java.net.InetAddress;
import java.net.Socket;
import java.util.Scanner;
import javax.swing.*;
/*
* 发送邮件客户端
*/
public class SendMail extends JFrame {
private JTextField from;
private JTextField to;
private JTextField server;
private JTextArea message;
private JTextArea comm;
private Scanner in;
private PrintWriter out;
public SendMail() {
// 设置frame
setSize(500, 600);
setTitle("send mail");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
this.setLocationRelativeTo(null);
// 往frame中添加组件
JPanel p1 = new JPanel(new GridLayout(3, 2));
p1.add(new JLabel("from:"));
from = new JTextField(20);
p1.add(from);
p1.add(new JLabel("to:"));
to = new JTextField(20);
p1.add(to);
p1.add(new JLabel("SMTP server:"));
server = new JTextField(20);
p1.add(server);
add(p1, BorderLayout.NORTH);
JPanel p2 = new JPanel(new GridLayout(2, 1));
message = new JTextArea();
p2.add(new JScrollPane(message));
comm = new JTextArea();
comm.setEditable(false);
p2.add(new JScrollPane(comm));
add(p2, BorderLayout.CENTER);
JPanel p3 = new JPanel();
JButton sendButton = new JButton("Send");
p3.add(sendButton);
add(p3, BorderLayout.SOUTH);
// 给发送按钮注册监听器
sendButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
comm.setText("");
sendMail(server.getText().trim(), from.getText().trim(), to
.getText().trim(), message.getText());
}
});
}
// 发送邮件
public void sendMail(String server, String from, String to, String message) {
try {
Socket s = new Socket(server, 25);
try {
in = new Scanner(s.getInputStream());
out = new PrintWriter(s.getOutputStream(), true/* 表示自动刷新 */);
String hostName = InetAddress.getLocalHost().getHostName();
receive();
send("HELLO" + hostName);// 握手,成功返回220表示服务就绪
receive();
send("MAIL FROM:");//发件人邮箱
receive();
send("RCPT TO:");//收件人邮箱
receive();
send("DATA");//表示开始发邮件内容了
receive();
send(message);//发送邮件你内容
send(".");
receive();
send("QUIT");
} finally {
s.close();
}
} catch (IOException e) {
comm.append("Error: " + e);
}
}
// 发送
private void send(String s) {
comm.append(s + '\n');
out.print(s);
out.print("\r\n");
out.flush();
}
// 接收
private void receive() {
comm.append(in.nextLine() + '\n');
}
public static void main(String[] args) {
new SendMail();
}
}
java 邮件客户端 smtp_java网络编程三:基于SMTP的邮件发送客户端相关推荐
- TCP/IP网络编程之基于TCP的服务端/客户端(一)
TCP/IP网络编程之基于TCP的服务端/客户端(一) 理解TCP和UDP 根据数据传输方式的不同,基于网络协议的套接字一般分为TCP套接字和UDP套接字.因为TCP套接字是面向连接的,因此又称为基于 ...
- TCP/IP网络编程之基于TCP的服务端/客户端(二)
回声客户端问题 上一章TCP/IP网络编程之基于TCP的服务端/客户端(一)中,我们解释了回声客户端所存在的问题,那么单单是客户端的问题,服务端没有任何问题?是的,服务端没有问题,现在先让我们回顾下服 ...
- C# 网络编程之基于SMTP发送电子邮件
本文主要讲述基于C#网络编程的发送邮件的编程,邮件发送功能是基于邮件协议的,常见的电子邮件协议有SMTP(简单邮件传输协议).POP3(邮局协议).IMAP(Internet邮件访问协议),文章主要 ...
- java网络编程作业基于UDP简单聊天窗口,图形化界面,包含客户端和服务端
//郑州轻工业大学 //题号:实验四 第二题 //题目:使用基于UDP的网络编程方法,完成客户端和服务器间的聊天功能.要求图形界面. java网络编程作业 基于UDP简单聊天窗口,图形化界面,包含客户 ...
- Java:网络编程,网络编程三要素,TCP协议,UDP协议
day23 网络编程 网络编程三要素: IP地址 端口号 通信协议 TCP协议 UDP协议 网络编程 1.网络:计算机网络,由在不同地理位置.不同的计算机主机,互联形成的一个计算机系统.有通讯和数据共 ...
- Java——网络编程三要素
* A:计算机网络* 是指将地理位置不同的具有独立功能的多台计算机及其外部设备,通过通信线路连接起来,在网络操作系统.网络管理软件及网络通信协议的管理和协调下,实现资源共享和信息传递的计算机系统.* ...
- 20165310 Java实验五《网络编程与安全》
20165310 Java实验五<网络编程与安全> 任务一 题目:①编写MyBC.java实现中缀表达式转后缀表达式的功能:②编写MyDC.java实现从上面功能中获取的表达式中实现后缀表 ...
- Java学习——Day14:网络编程
7.1 网络编程概述 Java是 Internet 上的语言,它从语言级上提供了对网络应用程 序的支持,程序员能够很容易开发常见的网络应用程序. Java提供的网络类库,可以实现无痛的网络连接,联网的 ...
- C语言网络编程:多路IO select实现多客户端
文章目录 阻塞式的服务器程序 多线程服务器程序 非阻塞式服务器程序 基于事件响应的服务器程序 事件响应服务器程序的实现`select` 阻塞式的服务器程序 我们接触过最多的最基础的网络通信模型为TCP ...
最新文章
- Java数组排序: Array-ArrayList-List-Collections.sort()/List.sort()/Arrays.sort()
- 怎样一步一步删除(linux amp; UNIX)环境下 oracle 11g 集群节点
- 解决SpringBoot更新数据到MySQL乱码问题
- deep$wide keras
- 跟着迪哥学python 经管之家_跟着迪哥学Python数据分析与机器学习实战
- spark内核揭秘-09-RDD的count操作 触发Job全生命周期-01
- Matlab各种随机数汇总
- Pytorch —— 权值初始化
- Intellij插件之JRebel
- IOT---(6)Android Things 开发环境搭建
- 学习日记0802函数递归,三元表达式,列表生成式,字典生成式,匿名函数+内置函数...
- Android VideoView
- SVM(三)—Kernels(核函数)
- 当不知轴承型号时如何寻找轴承故障频率_趣说滚动轴承的故障诊断
- 高等工程热力学复习01
- win10分辨率不能调整_三国志:游戏在win10系统无法运行咋办?
- 在硅谷初创公司怎么找投资人
- 【读书笔记】《Web全栈工程师的自我修养》
- 算法设计与分析第五章习题解答与学习指导(第2版)屈婉婷 刘田 张立昂 王捍贫编著 清华大学出版社
- 2020年金属非金属矿山(露天矿山)主要负责人考试报名及金属非金属矿山(露天矿山)主要负责人考试资料
热门文章
- C++基础::字符串流(stringstream)
- 平方根的计算(二分逼近、牛顿拉普生法)
- rtpengine集群_ubuntu 安装 rtpengine
- python数据分析-Python数据分析从小白到高手的几个步骤
- python入门经典-终于明白经典python入门教程
- 如何自学python知乎-马哥教育官网-专业Linux培训班,Python培训机构
- 简单python脚本实例-30个Python 小例子,帮你快速上手Python
- python手机版-QPython3手机版下载
- 如何自学python知乎-如何快速学习python?
- python小白从哪来开始-老男孩python课程亮点在哪里?python小白