java编写邮件收发程序步骤
补充回答:如果不涉及到MIME,只是收发简单文本邮件。就会比较简单。因为就像你说的,smtp和pop3协议就是文本格式的。你用Socket建立连接后,就像读文件一样,一行一行的读数据,然后按照协议分析数据格式。例如如果开始时USER那么后面可能跟的就是用户等。
就是一个字符串解析和匹配的过程。网上好像有这类代码,自己找一个学习一下。我以前用C在68k上作过,不是很难。不过代码已经没有了。
你的是邮件客户端,功能类似于outlook,foxmail等,如果你能上网,就不需要邮件服务器,直接用自己的邮件账号来测试,例如如果你有一个sina的邮件账户,就可以从sina服务器收发邮件。
不过为了测试方便,还是上网去收一个邮件服务器把。例如foxmail server等。网上有教程,可以配置好的。
对于编程,既然要求用socket编写,那么就要熟悉java的socket编程,这部分倒是很简单。可能还需要看看多线程部分。
另外,你需要学习一下, smtp和pop3这两个网络协议的内容,因为你需要解析这两个协议。如果需要收发代附件的,还需要看mime的内容,不过估计不需要。
其实java有自己的类库javamail,可以实现手法邮件,功能很强大。不过既然要求必须用socket,那就不能这个了。
说的太罗嗦了。总结一下:
1)配置邮件服务器,搭建测试环境
2)熟悉java的socket编程、 Swing编程(编写界面)、多线程(选用)
3)熟悉smtp和pop3的内容(内容很多,了解基本的就可以)
网上应该有类似代码,可以用来参考。
Macallan Mail Solution v4907001
Macallan Mail Solution 是一款 POP3 、IMAP、SMTP、HTTP (webMail) 邮件服务器软件 ,它还包括了防垃圾邮件机制。完全免费
下载地址:http://wwwcrskycom/soft/9605html (霏凡软件站)
Turbomail邮件服务器 v392
Turbomail 是一套全功能电子邮件服务器系统,支持Windows平台和Linux/BSD/Solaris/AIX/HP-UX平台,拓波公司以向广大企事业单位提供稳定高效易用的邮件服务器为目标,结合几百家使用客户的实际需求,经过5年的开发与改良,Turbomail邮件系统已具备高效稳定的性能,并且安装使用维护简易,并内带高效的反垃圾反病毒功能。
支持多种操作系统Windoes/Linux/FreeBSD/Solaris/Aix/HP-UX傻瓜式的安装,在Linux、Unix上通过解压安装包即可安装成功纯WEB的管理方式,让您脱离繁杂,易错的命令行管理方式简体中文、繁体中文、英文界面供选择,支持各国语言。
部分由JAVA开发而成,符合J2EE标准,可 运行在各主流的J2EE服务器上,如:Tomcat,WebLogic,WebSphere,JBoss
提供多种用户存储模式,包括:文本,多种数据库(MySQL,Oracle,SQLServer,DB2,Sybase),LDAP 等存储模式
内置了强大的反垃圾功能,内置了多层过滤机制,包括:来源识 别,关键字评分,实时黑名单评分,发件频率异常识别等等,集成了著名的开源反垃圾引擎 SpamAssassin,垃圾邮件拦截率达到95%以上。
集成了著名开源的反病毒引擎 clamav,确保对邮件病毒有999%以上的防护能力,内置Wap 访问界面,让用户方便地通过手机访问邮件提供完善的java 和 net 开发接口
如果用户数在25用户以内,Turbomail可供永久免费使用
下载地址:http://wwwcrskycom/soft/12216html (霏凡软件站)
小公司用javamail就行了 大公司看你的操作系统 要是Linux的话推荐用postfix Windows的话推荐用exchange。
附上exchange源码要使用的话需要加包
import javaioUnsupportedEncodingException;
import javautilDate;
import javautilProperties;
import javaxmailBodyPart;
import javaxmailMessage;
import javaxmailMessagingException;
import javaxmailMultipart;
import javaxmailSession;
import javaxmailTransport;
import javaxmailinternetInternetAddress;
import javaxmailinternetMimeBodyPart;
import javaxmailinternetMimeMessage;
import javaxmailinternetMimeMultipart;
public class Mailer {
private String host;
private String auth;
private String username;
private String domainUser;
private String password;
public boolean send(String[] to, String[] cc, String[] bcc, String subject, String content) throws MessagingException {
Properties props = new Properties();
propsput("mailsmtphost", host);
propsput("mailsmtpauth", auth);
Session s = SessiongetInstance(props);
//ssetDebug(true);
MimeMessage message = new MimeMessage(s);
InternetAddress from = new InternetAddress(username);
messagesetFrom(from);
//eprintStackTrace();
//messagesetFrom(from);
InternetAddress[] Toaddress = new InternetAddress[tolength];
for (int i = 0; i < tolength; i++)
Toaddress[i] = new InternetAddress(to[i]);
messagesetRecipients(MessageRecipientTypeTO, Toaddress);
if (cc != null) {
InternetAddress[] Ccaddress = new InternetAddress[cclength];
for (int i = 0; i < cclength; i++)
Ccaddress[i] = new InternetAddress(cc[i]);
messagesetRecipients(MessageRecipientTypeCC, Ccaddress);
}
if (bcc != null) {
InternetAddress[] Bccaddress = new InternetAddress[bcclength];
for (int i = 0; i < bcclength; i++)
Bccaddress[i] = new InternetAddress(bcc[i]);
messagesetRecipients(MessageRecipientTypeBCC, Bccaddress);
}
messagesetSubject(subject);
messagesetSentDate(new Date());
BodyPart mdp = new MimeBodyPart();
mdpsetContent(content, "text/html;charset=utf-8");
Multipart mm = new MimeMultipart();
mmaddBodyPart(mdp);
messagesetContent(mm);
messagesaveChanges();
Transport transport = sgetTransport("smtp");
transportconnect(host, (null == domainUser) username : domainUser, password);
transportsendMessage(message, messagegetAllRecipients());
transportclose();
return true;
}
public Mailer(String host, String auth, String domainUser, String username, String password) {
super();
thishost = host;
thisauth = auth;
thisdomainUser = domainUser;
thisusername = username;
thispassword = password;
}
public static void main(String[]args){
try {
new Mailer("你的ip", "true", "域名\\域用户", "邮件", "密码")send(new String[] { "281683400@qqcom" }, null, null, "demo_title", "<h3>test</h3>");
} catch (MessagingException e) {
// TODO Auto-generated catch block
eprintStackTrace();
}
}
开源的主要有extmail比较不错,不过界面不好看,若是企业建设邮件服务器的话还是建议购买专业的商业邮件服务器,推荐 kxmail邮件系统 支持跨平台操作,功能强大、方便网管员管理
Java中可以通过Javamail API实现公司邮箱邮件发送配置,Java mail是利用现有的邮箱账户发送邮件的工具,具体步骤如如下:
1、通过JavamailAPI设置发送者邮箱用户名及密码
2、通过JavamailAPI设置邮件主题、邮件内容、附件及邮件发送时间
3、通过JavamailAPI设置发送者邮箱地址及接收者邮箱地址,接收者地址可以是多个及抄送
4、邮件的需基本元素都设置完毕后,即可通过Javamail API的发送接口执行发送操作。
前面四个问题,合在一起是三个,2,3是同一个问题,基本都和电脑设置和参数调节有关,所以没有什么固定的值。域,只要支持虚拟域名就可以支持多个,最大邮件根据磁盘上的文件系统支持来定。以Postfix为例,对这个较为熟悉。用户最大空间也是这样。
下面简单说三个的比较
一,共同点,
1,三个曾经都是开源免费的邮件服务器;
2,都是国外开发的。
3,目前都在使用的。没有停止支持。(有些优秀的产品都停止了比如Qmail)
二,不同点,
1,Hmailserver是基于Windows平台,而且是一组套件,不仅是MTA。可以说是一组工程。
之前开源免费,现在免费不开源。详细可以到官网上查询。
2,Postfix和Sendmail是基于Unix,及类Unix的免费开源项目。并且都是MTA。如果作为邮件服务器项目,还要配合其他的产品,比如Devocot,反垃圾,WebMail。WebAdmin,ANti-virus For Mail等等。
3,Postfix和Sendmail非常相似,但是也有不同,Postfix是替代Sendmail而生,从设计上讲,比Sendmail有如下优点:并发,性能,安全,配置容易,与其他组件支持全面,容易替代Sendmail。
这方面的资料很多,原因是这两个MTA太知名了,使用也是最广泛的。
三,个人意见:
1,由于没有弄地Hmailserver,所以没什么比较的,这个是WIndows下的项目,因此安装配置应该是最简单的。平时生产过程中,主要Postfix配置过不少项目,个人推荐这个。有成熟的文档和组合。Sendmail主要是被替代,所以只要了解就好。一般生产环境不用这个了。
2,具体Postfix和Sendmail的技术细节网上资料很多,可以搜,图表基本没有的。
3,三个选用,Postfix和Hmail都有优缺点,前者自己的能力和后续支持升级时间要多些。后者以后会不会继续免费是个问题。
0条评论