- 浏览: 467838 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (272)
- java基础 (59)
- struts (8)
- spring (8)
- 数据库 (8)
- java 网络编程 (29)
- hibernate (3)
- JavaScript (10)
- 日志管理 (2)
- jsp (4)
- servlet (7)
- xml (4)
- ajax (2)
- web service (4)
- 算法与数据结构 (13)
- java 反射机制 (11)
- java 泛型 (3)
- java I/O (8)
- java 线程 (12)
- JavaEE (6)
- java解惑 (33)
- 工具 (5)
- MyEclipse编程实践 (1)
- OSGI (2)
- 设计模式 (9)
- 正则表达式 (0)
- EJB (3)
- Ubuntu linux (6)
- Android (1)
- web前端 (2)
- 找工作 (1)
- SCA (1)
- maven (1)
- 缓存 (1)
- json (1)
- javamail (1)
- 工作笔记 (2)
最新评论
-
霜花似雪:
博主可以分享一下源码吗?
使用maven构建web项目实例 -
王庆波-行:
很好的demo!
memcache使用实例 -
surpassno:
大写的牛逼
java可视化显示内存使用情况 -
zhulin0504:
怎么访问NetEcho.html页面呀???
applet与servlet的网络通信 -
springdata:
java多线程实例demo源代码下载:http://www.z ...
java多线程例子
这是在网上摘的,执行接收邮件出现:530 Authentication required,不知如何解决??请大家帮助之
发送邮件
接收邮件
源码见附件
附件SMTPMail.rar是另外一个例子,出现如下错误
发送邮件
import java.net.*; import java.io.*; /** * <p>Title: 使用SMTP发送邮件</p> * <p>Description: 本实例通过使用socket方式,根据SMTP协议发送邮件</p> * <p>Copyright: Copyright (c) 2003</p> * <p>Filename: sendSMTPMail.java</p> * @author 杜江 * @version 1.0 */ public class sendSMTPMail { /** *<br>方法说明:主方法 *<br>输入参数:1。服务器ip;2。对方邮件地址 *<br>返回类型: */ public static void main(String[] arges) { if(arges.length!=2){ System.out.println("use java sendSMTPMail hostname | mail to"); return; } sendSMTPMail t = new sendSMTPMail(); t.sendMail(arges[0], arges[1]); } /** *<br>方法说明:发送邮件 *<br>输入参数:String mailServer 邮件接收服务器 *<br>输入参数:String recipient 接收邮件的地址 *<br>返回类型: */ public void sendMail(String mailServer, String recipient) { try { //有Socket打开25端口 Socket s = new Socket(mailServer, 25); //缓存输入和输出 BufferedReader in = new BufferedReader (new InputStreamReader(s.getInputStream(), "8859_1")); BufferedWriter out = new BufferedWriter (new OutputStreamWriter(s.getOutputStream(), "8859_1")); //发出“HELO”命令,表示对服务器的问候 send(in, out, "HELO theWorld"); //告诉服务器我的邮件地址,有些服务器要校验这个地址 send(in, out, "MAIL FROM: <hnzhoujunmei@sina.com>"); //使用“RCPT TO”命令告诉服务器解释邮件的邮件地址 send(in, out, "RCPT TO: " + recipient); //发送一个“DATA”表示下面将是邮件主体 send(in, out, "DATA"); //使用Subject命令标注邮件主题 send(out, "Subject: 这是一个测试程序!"); //使用“From”标注邮件的来源 send(out, "From: riverwind <hnzhoujunmei@sina.com>"); send (out, "\n"); //邮件主体 send(out, "这是一个使用SMTP协议发送的邮件!如果打扰请删除!"); send(out, "\n.\n"); //发送“QUIT”端口邮件的通讯 send(in, out, "QUIT"); s.close(); } catch (Exception e) { e.printStackTrace(); } } /** *<br>方法说明:发送信息,并接收回信 *<br>输入参数: *<br>返回类型: */ public void send(BufferedReader in, BufferedWriter out, String s) { try { out.write(s + "\n"); out.flush(); System.out.println(s); s = in.readLine(); System.out.println(s); } catch (Exception e) { e.printStackTrace(); } } /** *<br>方法说明:重载方法。向socket写入信息 *<br>输入参数:BufferedWriter out 输出缓冲器 *<br>输入参数:String s 写入的信息 *<br>返回类型: */ public void send(BufferedWriter out, String s) { try { out.write(s + "\n"); out.flush(); System.out.println(s); } catch (Exception e) { e.printStackTrace(); } } }
接收邮件
import java.io.*; import java.net.*; /** * <p>Title: SMTP协议接收邮件</p> * <p>Description: 通过Socket连接POP3服务器,使用SMTP协议接收邮件服务器中的邮件</p> * <p>Copyright: Copyright (c) 2003</p> * <p>Filename: </p> * @author 杜江 * @version 1.0 */ class POP3Demo { /** *<br>方法说明:主方法,接收用户输入 *<br>输入参数: *<br>返回类型: */ public static void main(String[] args){ if(args.length!=3){ System.out.println("USE: java POP3Demo mailhost user password"); } new POP3Demo().receive(args[0],args[1],args[2]); } /** *<br>方法说明:接收邮件 *<br>输入参数:String popServer 服务器地址 *<br>输入参数:String popUser 邮箱用户名 *<br>输入参数:String popPassword 邮箱密码 *<br>返回类型: */ public static void receive (String popServer, String popUser, String popPassword) { String POP3Server = popServer; int POP3Port = 110; Socket client = null; try { // 创建一个连接到POP3服务程序的套接字。 client = new Socket (POP3Server, POP3Port); //创建一个BufferedReader对象,以便从套接字读取输出。 InputStream is = client.getInputStream (); BufferedReader sockin; sockin = new BufferedReader (new InputStreamReader (is)); //创建一个PrintWriter对象,以便向套接字写入内容。 OutputStream os = client.getOutputStream (); PrintWriter sockout; sockout = new PrintWriter (os, true); // true for auto-flush // 显示POP3握手信息。 System.out.println ("S:" + sockin.readLine ()); /*-- 与POP3服务器握手过程 --*/ System.out.print ("C:"); String cmd = "user "+popUser; // 将用户名发送到POP3服务程序。 System.out.println (cmd); sockout.println (cmd); // 读取POP3服务程序的回应消息。 String reply = sockin.readLine (); System.out.println ("S:" + reply); System.out.print ("C:"); cmd = "pass "; // 将密码发送到POP3服务程序。 System.out.println(cmd+"*********"); sockout.println (cmd+popPassword); // 读取POP3服务程序的回应消息。 reply = sockin.readLine (); System.out.println ("S:" + reply); System.out.print ("C:"); cmd = "stat"; // 获取邮件数据。 System.out.println(cmd); sockout.println (cmd); // 读取POP3服务程序的回应消息。 reply = sockin.readLine (); System.out.println ("S:" + reply); if(reply==null) return; System.out.print ("C:"); cmd = "retr 1"; // 将接收第一丰邮件命令发送到POP3服务程序。 System.out.println(cmd); sockout.println (cmd); // 输入了RETR命令并且返回了成功的回应码,持续从套接字读取输出, // 直到遇到<CRLF>.<CRLF>。这时从套接字读出的输出就是邮件的内容。 if (cmd.toLowerCase ().startsWith ("retr") && reply.charAt (0) == '+') do { reply = sockin.readLine (); System.out.println ("S:" + reply); if (reply != null && reply.length () > 0) if (reply.charAt (0) == '.') break; } while (true); cmd = "quit"; // 将命令发送到POP3服务程序。 System.out.print (cmd); sockout.println (cmd); } catch (IOException e) { System.out.println (e.toString ()); } finally { try { if (client != null) client.close (); } catch (IOException e) { } } } }
源码见附件
附件SMTPMail.rar是另外一个例子,出现如下错误
java.io.IOException: 指定源地址失败 at client.SMTPClient.mailfrom(SMTPClient.java:108) at client.SMTPClient.sendMail(SMTPClient.java:47) at servlet.SendMailSMTP.doPost(SendMailSMTP.java:35) at javax.servlet.http.HttpServlet.service(HttpServlet.java:710) at javax.servlet.http.HttpServlet.service(HttpServlet.java:803) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844) at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583) at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447) at java.lang.Thread.run(Unknown Source)
- src.rar (2.5 KB)
- 下载次数: 19
- SMTPMail.rar (10.1 KB)
- 下载次数: 12
发表评论
-
计算机网络知识
2011-06-01 16:19 792一个http请求的详细过程 我们来看当我们在浏览器输入htt ... -
java udp socket实例
2010-12-06 12:28 7120客户端: package udp; import jav ... -
线程池实现tcp socket
2010-12-01 17:23 2879前面的程序,当一个客户端请求到来时,服务器端就会临时性的创建一 ... -
tcp socket实例(改进)
2010-12-01 16:16 1592上一篇的程序服务器端只能接受一个客户端请求,本篇改为模拟多客户 ... -
java tcp socket实例
2010-12-01 13:44 1625网络编程的基本模型就是客户端到服务器端模型,一段必须提供一个固 ... -
telnet协议(转)
2010-10-14 17:17 1139我们知道Telnet服务器软 ... -
whois协议(转)
2010-10-14 14:28 1361当我们预备建立一个Web站点,就必须向域名登记机构申请一个In ... -
java 网络协议(一)Tcp多线程服务器端编程
2010-10-14 11:33 54851,通用服务器代码: package multiThread; ... -
java 网络协议(一)UDP
2010-10-14 09:24 1476UDP测试程序,无需建立连接 package udp; ... -
java 网络协议(一)Tcp
2010-10-14 08:52 51371,简化的服务器端程序 package tcp; imp ... -
java 网络协议(一)InetAddress和Socket(含源码)
2010-10-14 08:24 18831,ip地址和主机名互换 package getip; ... -
ftp协议2(转)
2010-10-12 16:26 965FTP协议工作原理 FTP有 ... -
ftp协议(转)
2010-10-12 16:21 1266ftp协议 FTP协议将使用两 ... -
SMTP服务协议(转)
2010-10-11 15:31 1246SMTP服务概述 鉴于本课程的默认读者群是那些对Inter ... -
jdk6.0从入门到精通-----chapter5网络编程 新I/O(含源码下载)
2010-09-21 10:13 1430本例向用户通过参数指定的主机端口发送一段请求报文,然后读取和打 ... -
jdk6.0从入门到精通-----chapter6--http
2010-09-14 16:32 945用httpconnection进行文件下载,建立一般的jav ... -
java自学===Filter类的应用,验证用户
2010-09-14 14:37 940Filter类 package com; import ... -
java自学===Filter类的应用,网站数量统计
2010-09-14 12:31 1940package filterStatistic; imp ... -
jdk6.0从入门到精通-----chapter5网络编程 udp套接字
2010-09-12 13:46 1162用到的主要类DatagramPacket,DatagramSo ... -
jdk6.0从入门到精通-----chapter5网络编程 tcp连接池
2010-09-10 18:07 984package pool; import java.ne ...
相关推荐
标题中的“socket实现简单邮件发送”指的是利用套接字(Socket)编程技术来发送电子邮件。在计算机网络中,Socket是应用程序通过编程接口与操作系统进行通信的桥梁,它允许程序发送和接收数据。在这个项目中,我们将...
了解如何使用socket发送邮件也能帮助开发者更好地理解和调试邮件发送问题,尤其是在遇到常规邮件函数(如`mail()`)无法解决的情况时。 总的来说,这个PHP类库利用socket功能实现了SMTP邮件发送,为开发者提供了一种...
它提供了丰富的接口和类,可以方便地创建、发送、接收邮件。在本项目中,我们需要重点关注`javax.mail`和`javax.mail.internet`这两个包,它们包含了发送邮件所需的核心类和方法。 1. **配置邮件服务器** 在使用...
在这个"基于Java的简单socket邮件发送"实验中,我们将深入探讨如何利用Java的Socket类来构建一个基本的邮件发送系统。 首先,我们需要了解Socket的工作原理。Socket是TCP/IP协议的一部分,它为两台计算机提供了一个...
在这个系统中,SMTP协议被用于与邮件服务器进行通信,接收邮件。通常,邮件接收涉及IMAP(Internet Message Access Protocol)或POP3(Post Office Protocol version 3),但这里提到的是SMTP,可能意味着该系统首先...
`socket_read()`用于接收服务器的响应,确保邮件发送过程中的每个步骤都能正确执行。 SMTP(Simple Mail Transfer Protocol)是互联网上传输电子邮件的标准协议。使用SMTP发送邮件通常包括以下步骤: 1. 建立连接:...
Socket邮件客户端是一款基于Socket编程技术实现的电子邮件应用程序,它允许用户通过SMTP(简单邮件传输协议)发送邮件,并通过POP3(邮局协议)或IMAP(互联网消息访问协议)接收邮件。这款客户端的独特之处在于其...
在PHP编程中,使用...通过研究这些文件,你可以更深入地理解如何在PHP中利用Socket发送邮件验证邮箱的有效性。同时,确保在实际使用时遵循最佳实践,尊重用户隐私,并遵守相关的法律和政策,以免引起不必要的问题。
SMTP用于发送邮件,而POP3用于接收邮件。使用Socket与SMTP服务器和POP3服务器建立连接后,我们可以通过发送特定的命令来进行邮件操作。 1. **SMTP协议**:SMTP是基于TCP/IP的协议,用于从客户端向邮件服务器发送...
在本项目中,我们将探讨如何利用Apache James来实现邮件的发送与接收,并通过JavaMail API进行相关的编程操作。 1. **Apache James邮件服务器的安装与配置** - 下载Apache James最新版本的源码或二进制包。 - ...
Java Socket邮件客户端是一种基于Java编程语言,利用Socket通信协议实现的邮件收发工具。它能够帮助开发者通过编程接口与邮件服务器进行交互,实现发送、接收邮件的功能。在本项目中,"LaserMail.2.03BLOOD"可能是这...
本教程将深入讲解如何利用Java实现邮件的发送,并包含身份验证的过程,这对于自动化任务、通知系统或者任何需要通过电子邮件进行通信的应用来说是至关重要的。 首先,我们来了解计算机网络中的Socket编程。Socket是...
利用 Java 的 Socket 编程技术结合 SMTP (Simple Mail Transfer Protocol) 协议,可以实现从应用程序直接发送邮件的功能。下面将详细介绍如何使用 Java Socket 实现这一目标。 #### 一、SMTP 协议简介 SMTP 是一种...
在发送邮件时,需要按照SMTP的交互流程,逐个发送命令并接收服务器的响应。例如,先发送“HELO”命令,然后设置发件人和收件人地址,再发送邮件内容,最后使用“QUIT”命令结束会话。 在处理附件时,需要使用MIME...
在这个项目中,我们将利用SMTP(Simple Mail Transfer Protocol)协议,这是互联网上用于发送电子邮件的标准协议。 首先,我们需要了解SMTP的基本工作流程。SMTP服务器接收来自客户端的邮件,并将其转发到指定的收...
在利用Winsock编写的收发邮件程序中,我们通常会使用SMTP(Simple Mail Transfer Protocol)来发送邮件,以及POP3(Post Office Protocol version 3)或IMAP4(Internet Message Access Protocol version 4)来接收...
`Initialize`函数负责初始化Winsock环境,而`MailSend`则执行SMTP协议流程,通过socket发送邮件指令和内容。 【实验步骤】 1. 创建VC6工程,设置好包含和库路径。 2. 编写SMTP协议相关的函数和类,实现邮件发送逻辑...
发送和接收邮件可能涉及多种编码,如ASCII、Base64、MIME等。在C语言中,你需要理解和使用这些编码方式来正确地处理邮件内容和附件。 在`pop3.c`和`smtp.c`这两个文件中,我们可以预见到它们分别实现了POP3和SMTP...