`

socket实现邮件发送

 
阅读更多

通过java的网络编程特性,完成邮件发送的功能,效果图如下:



首先新建一个maiTest的java项目,


然后新建GBC.java和MailTest.java文件


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

运行即出现效果图
分享到:
评论

相关推荐

    Java Socket 实现SMTP邮件发送,支持SSL/TSL

    在本案例中,我们将关注如何使用Java Socket来实现SMTP(Simple Mail Transfer Protocol)邮件发送,并支持SSL(Secure Sockets Layer)和TLS(Transport Layer Security)安全协议。 SMTP是一种互联网标准,用于在...

    用Socket编程实现电子邮件的发送

    ### 使用Socket编程实现电子邮件发送的关键知识点 #### 一、Socket编程基础 Socket编程是一种网络通信方式,它允许不同计算机上的程序进行数据交换。在互联网上,每个设备都有一个唯一的IP地址,而Socket则是通过...

    socket实现简单邮件发送

    标题中的“socket实现简单邮件发送”指的是利用套接字(Socket)编程技术来发送电子邮件。在计算机网络中,Socket是应用程序通过编程接口与操作系统进行通信的桥梁,它允许程序发送和接收数据。在这个项目中,我们将...

    java socket实现smtp发送邮件,支持SSL

    下面将详细介绍如何使用Java Socket实现SMTP发送邮件,并涵盖与QQ和Gmail邮箱的兼容性。 首先,为了通过SMTP发送邮件,我们需要理解SMTP的工作流程。SMTP服务器通常使用25号端口进行通信,但在启用SSL或TLS安全连接...

    用Java Socket实现SMTP邮件发送

    总的来说,通过Java Socket实现SMTP邮件发送涉及到网络编程、SMTP协议理解、异常处理等多个知识点。这种技术在日常工作中非常实用,可以方便地集成到各种自动化任务或系统中,如定时发送报告、系统通知等。然而,...

    C# socket smtp 邮件发送(支持SSL)

    然而,为了实现socket级别的控制,我们可以直接使用System.Net.Sockets命名空间的TcpClient和NetworkStream类,这样可以更好地理解邮件发送的底层过程。SSL(Secure Sockets Layer)或其后续版本TLS(Transport ...

    基于socket的邮件发送程序(java编写)

    基于Socket的邮件发送程序(Java编写) 在现代通信中,电子邮件是不可或缺的一部分,而Java作为一种广泛应用的编程语言,提供了多种方式来实现邮件的发送。本文将深入探讨如何使用Java的Socket编程实现SMTP(简单...

    java socket编程发送邮件

    本程序用socket编程实现发送邮件的功能,并测试成功

    用java socket实现smtp邮件发送,支持SSL

    在提供的"SocketForSmtp"压缩包文件中,可能包含了一个简单的Java示例代码,演示了如何用Socket实现SMTP邮件发送并支持SSL/TLS。这个示例代码可能包括了以上提到的所有步骤,包括错误处理和异常捕获,以便在遇到问题...

    java socket 实现SMTP协议 发送邮件.docx

    Java Socket 实现 SMTP 协议发送邮件 Java Socket 是 Java 语言中用于实现网络编程的 API,通过 Socket,可以实现与远程服务器的通信。在这里,我们将使用 Java Socket 实现 SMTP 协议来发送邮件。 SMTP 协议简介 ...

    利用socket发送接收邮件(转)

    本篇将详细讲解如何利用Java的Socket编程来实现邮件的发送和接收。 首先,我们来看标签中的"源码"和"工具",这暗示我们将探讨的是具体的编程实现和可能的实用工具。在这个场景下,`POP3Demo.java`和`sendSMTPMail....

    纯C代码在Linux实现邮件发送

    在Linux环境下,使用纯C语言实现邮件发送是一个挑战性的任务,因为这涉及到对网络协议的理解以及C编程的熟练掌握。本教程将深入讲解如何利用POP和SMTP协议来完成这一过程。 首先,POP(Post Office Protocol)是...

    基于java的简单socket邮件发送

    在这个"基于Java的简单socket邮件发送"实验中,我们将深入探讨如何利用Java的Socket类来构建一个基本的邮件发送系统。 首先,我们需要了解Socket的工作原理。Socket是TCP/IP协议的一部分,它为两台计算机提供了一个...

    使用Socket结合SMTP/POP3邮件协议发送和接收邮件

    总之,通过Socket编程与SMTP和POP3协议相结合,我们可以实现自定义的邮件发送和接收功能。这种方式虽然比使用现成的库更底层,但也具有灵活性和定制性,适合特定的需求场景。在处理大量邮件或者需要高度自定义功能时...

    php-socket发送邮件类.zip

    一个php-socket发送邮件类,基于socket实现SMTP发送邮件的方法,实例分析了php采用socket实现smtp发送邮件的原理与技巧,具有一定参考借鉴价值,需要的朋友可以参考下。

    php中Socket发送邮件验证邮箱的类.zip

    本压缩包提供的"php中Socket发送邮件验证邮箱的类"正是这样一个工具,它能够帮助开发者实现这一功能。 该类的工作原理是模拟SMTP通信过程,向邮件服务器发起连接请求,通过发送EHLO/HELO命令、验证用户身份(使用...

    c语言实现的发送邮件

    在压缩包中的"Email"文件,可能包含了一个示例的C语言邮件发送程序,包括源代码和必要的头文件。分析和学习这个示例,将有助于理解上述概念如何在实际代码中体现。 总的来说,C语言实现发送邮件涉及到网络编程、...

    java socket发送SMTP邮件,支持SSL,支持发附件,抄送且发送的邮件标题内容都无乱码!

    java socket发送SMTP邮件,支持SSL,支持发附件,抄送且发送的邮件标题内容都无乱码!

Global site tag (gtag.js) - Google Analytics