通过java的网络编程特性,完成邮件发送的功能,效果图如下:
第一步,新建java项目,MailTest
第二步,新建GBC.java,代码如下:
package ch02;
import java.awt.*;
public class GBC extends GridBagConstraints
{
public GBC(int gridx, int gridy)
{
this.gridx = gridx;
this.gridy = gridy;
}
public GBC(int gridx, int gridy, int gridwidth, int gridheight)
{
this.gridx = gridx;
this.gridy = gridy;
this.gridwidth = gridwidth;
this.gridheight = gridheight;
}
public GBC setAnchor(int anchor)
{
this.anchor = anchor;
return this;
}
public GBC setFill(int fill)
{
this.fill = fill;
return this;
}
public GBC setWeight(double weightx, double weighty)
{
this.weightx = weightx;
this.weighty = weighty;
return this;
}
public GBC setInsets(int distance)
{
this.insets = new Insets(distance, distance, distance, distance);
return this;
}
public GBC setInsets(int top, int left, int bottom, int right)
{
this.insets = new Insets(top, left, bottom, right);
return this;
}
public GBC setIpad(int ipadx, int ipady)
{
this.ipadx = ipadx;
this.ipady = ipady;
return this;
}
}
第三步,新建MailTest.java,代码如下:
package ch02;
import java.awt.*;
import java.awt.event.*;
import java.util.*;
import java.net.*;
import java.io.*;
import javax.swing.*;
public class MailTest
{
public static void main(String[] args)
{
EventQueue.invokeLater(new Runnable()
{
public void run()
{
JFrame frame = new MailTestFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
});
}
}
class MailTestFrame extends JFrame
{
public MailTestFrame()
{
setSize(DEFAULT_WIDTH, DEFAULT_HEIGHT);
setTitle("MailTest");
setLayout(new GridBagLayout());
add(new JLabel("From:"), new GBC(0, 0).setFill(GBC.HORIZONTAL));
from = new JTextField(20);
add(from, new GBC(1, 0).setFill(GBC.HORIZONTAL).setWeight(100, 0));
add(new JLabel("To:"), new GBC(0, 1).setFill(GBC.HORIZONTAL));
to = new JTextField(20);
add(to, new GBC(1, 1).setFill(GBC.HORIZONTAL).setWeight(100, 0));
add(new JLabel("SMTP server:"), new GBC(0, 2).setFill(GBC.HORIZONTAL));
smtpServer = new JTextField(20);
add(smtpServer, new GBC(1, 2).setFill(GBC.HORIZONTAL).setWeight(100, 0));
message = new JTextArea();
add(new JScrollPane(message), new GBC(0, 3, 2, 1).setFill(GBC.BOTH).setWeight(100, 100));
comm = new JTextArea();
add(new JScrollPane(comm), new GBC(0, 4, 2, 1).setFill(GBC.BOTH).setWeight(100, 100));
JPanel buttonPanel = new JPanel();
add(buttonPanel, new GBC(0, 5, 2, 1));
JButton sendButton = new JButton("Send");
buttonPanel.add(sendButton);
sendButton.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent event)
{
// new SwingWorker<Void, Void>()
// {
// protected Void doInBackground() throws Exception
// {
// comm.setText("");
// sendMail();
// return null;
// }
// }.execute();
}
});
}
public void sendMail()
{
try
{
Socket s = new Socket(smtpServer.getText(), 25);
InputStream inStream = s.getInputStream();
OutputStream outStream = s.getOutputStream();
in = new Scanner(inStream);
out = new PrintWriter(outStream, true /* autoFlush */);
String hostName = InetAddress.getLocalHost().getHostName();
receive();
send("HELO " + hostName);
receive();
send("MAIL FROM: <" + from.getText() + ">");
receive();
send("RCPT TO: <" + to.getText() + ">");
receive();
send("DATA");
receive();
send(message.getText());
send(".");
receive();
s.close();
}
catch (IOException e)
{
comm.append("Error: " + e);
}
}
public void send(String s) throws IOException
{
comm.append(s);
comm.append("\n");
out.print(s.replaceAll("\n", "\r\n"));
out.print("\r\n");
out.flush();
}
public void receive() throws IOException
{
String line = in.nextLine();
comm.append(line);
comm.append("\n");
}
private Scanner in;
private PrintWriter out;
private JTextField from;
private JTextField to;
private JTextField smtpServer;
private JTextArea message;
private JTextArea comm;
public static final int DEFAULT_WIDTH = 300;
public static final int DEFAULT_HEIGHT = 300;
}
运行即出现上图效果
- 大小: 13.3 KB
分享到:
相关推荐
在本案例中,我们将关注如何使用Java Socket来实现SMTP(Simple Mail Transfer Protocol)邮件发送,并支持SSL(Secure Sockets Layer)和TLS(Transport Layer Security)安全协议。 SMTP是一种互联网标准,用于在...
### 使用Socket编程实现电子邮件发送的关键知识点 #### 一、Socket编程基础 Socket编程是一种网络通信方式,它允许不同计算机上的程序进行数据交换。在互联网上,每个设备都有一个唯一的IP地址,而Socket则是通过...
标题中的“socket实现简单邮件发送”指的是利用套接字(Socket)编程技术来发送电子邮件。在计算机网络中,Socket是应用程序通过编程接口与操作系统进行通信的桥梁,它允许程序发送和接收数据。在这个项目中,我们将...
下面将详细介绍如何使用Java Socket实现SMTP发送邮件,并涵盖与QQ和Gmail邮箱的兼容性。 首先,为了通过SMTP发送邮件,我们需要理解SMTP的工作流程。SMTP服务器通常使用25号端口进行通信,但在启用SSL或TLS安全连接...
总的来说,通过Java Socket实现SMTP邮件发送涉及到网络编程、SMTP协议理解、异常处理等多个知识点。这种技术在日常工作中非常实用,可以方便地集成到各种自动化任务或系统中,如定时发送报告、系统通知等。然而,...
然而,为了实现socket级别的控制,我们可以直接使用System.Net.Sockets命名空间的TcpClient和NetworkStream类,这样可以更好地理解邮件发送的底层过程。SSL(Secure Sockets Layer)或其后续版本TLS(Transport ...
基于Socket的邮件发送程序(Java编写) 在现代通信中,电子邮件是不可或缺的一部分,而Java作为一种广泛应用的编程语言,提供了多种方式来实现邮件的发送。本文将深入探讨如何使用Java的Socket编程实现SMTP(简单...
本程序用socket编程实现发送邮件的功能,并测试成功
在提供的"SocketForSmtp"压缩包文件中,可能包含了一个简单的Java示例代码,演示了如何用Socket实现SMTP邮件发送并支持SSL/TLS。这个示例代码可能包括了以上提到的所有步骤,包括错误处理和异常捕获,以便在遇到问题...
Java Socket 实现 SMTP 协议发送邮件 Java Socket 是 Java 语言中用于实现网络编程的 API,通过 Socket,可以实现与远程服务器的通信。在这里,我们将使用 Java Socket 实现 SMTP 协议来发送邮件。 SMTP 协议简介 ...
本篇将详细讲解如何利用Java的Socket编程来实现邮件的发送和接收。 首先,我们来看标签中的"源码"和"工具",这暗示我们将探讨的是具体的编程实现和可能的实用工具。在这个场景下,`POP3Demo.java`和`sendSMTPMail....
在Linux环境下,使用纯C语言实现邮件发送是一个挑战性的任务,因为这涉及到对网络协议的理解以及C编程的熟练掌握。本教程将深入讲解如何利用POP和SMTP协议来完成这一过程。 首先,POP(Post Office Protocol)是...
在这个"基于Java的简单socket邮件发送"实验中,我们将深入探讨如何利用Java的Socket类来构建一个基本的邮件发送系统。 首先,我们需要了解Socket的工作原理。Socket是TCP/IP协议的一部分,它为两台计算机提供了一个...
总之,通过Socket编程与SMTP和POP3协议相结合,我们可以实现自定义的邮件发送和接收功能。这种方式虽然比使用现成的库更底层,但也具有灵活性和定制性,适合特定的需求场景。在处理大量邮件或者需要高度自定义功能时...
一个php-socket发送邮件类,基于socket实现SMTP发送邮件的方法,实例分析了php采用socket实现smtp发送邮件的原理与技巧,具有一定参考借鉴价值,需要的朋友可以参考下。
本压缩包提供的"php中Socket发送邮件验证邮箱的类"正是这样一个工具,它能够帮助开发者实现这一功能。 该类的工作原理是模拟SMTP通信过程,向邮件服务器发起连接请求,通过发送EHLO/HELO命令、验证用户身份(使用...
在压缩包中的"Email"文件,可能包含了一个示例的C语言邮件发送程序,包括源代码和必要的头文件。分析和学习这个示例,将有助于理解上述概念如何在实际代码中体现。 总的来说,C语言实现发送邮件涉及到网络编程、...
java socket发送SMTP邮件,支持SSL,支持发附件,抄送且发送的邮件标题内容都无乱码!