Java培训教程—Java发送邮件

Java培训教程—Java发送邮件
Java培训教程—Java发送邮件

JAVA培训教程—Java发送邮件

使用Java应用程序发送E-mail十分简单,但是首先你应该在你的机器上安装JavaMail API 和Java Activation Framework (JAF) 。

你可以在 JavaMail (Version 1.2) 下载最新的版本。你可以再在JAF (Version 1.1.1)下载最新的版本。

下载并解压这些文件,最上层文件夹你会发现很多的jar文件。你需要将mail.jar和activation.jar 添加到你的CLASSPATH中。

发送一封简单的 E-mail

下面是一个发送简单E-mail的例子。假设你的localhost已经连接到网络。

1 2 3 4 5 6 7 8 9

10

11

12

13

14

15

16 // 文件名 SendEmail.java

import java.util.*;

import javax.mail.*;

import javax.mail.internet.*;

import javax.activation.*;

public class SendEmail

{

public static void main(String [] args)

{

// 收件人电子邮箱

String to = "abcd@https://www.360docs.net/doc/f96989148.html,";

// 发件人电子邮箱

String from = "web@https://www.360docs.net/doc/f96989148.html,";

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45 // 指定发送邮件的主机为 localhost

String host = "localhost";

// 获取系统属性

Properties properties = System.getProperties();

// 设置邮件服务器

properties.setProperty("mail.smtp.host", host);

// 获取默认session对象

Session session = Session.getDefaultInstance(properties);

try{

// 创建默认的 MimeMessage 对象

MimeMessage message = new MimeMessage(session);

// Set From: 头部头字段

message.setFrom(new InternetAddress(from));

// Set To: 头部头字段

message.addRecipient(Message.RecipientType.TO,

new InternetAddress(to

// Set Subject: 头部头字段

message.setSubject("This is the Subject Line!");

// 设置消息体

message.setText("This is actual message");

46

47

48

49

50

51

52

53

54

// 发送消息

Transport.send(message);

System.out.println("Sent message successfully....");

}catch (MessagingException mex) {

mex.printStackTrace();

}

}

}

编译并运行这个程序来发送一封简单的E-mail:

1 2 $ java SendEmail

Sent message successfully....

如果你想发送一封e-mail给多个收件人,那么使用下面的方法来指定多个收件人ID:

1 2 3 void addRecipients(Message.RecipientType type,

Address[] addresses) throws MessagingException

下面是对于参数的描述:

?type:要被设置为TO, CC 或者BCC. 这里CC 代表抄送、BCC 代表秘密抄送y. 举例:Message.RecipientType.TO

?addresses:这是email ID的数组。在指定电子邮件ID时,你将需要使用InternetAddress()方法。

发送一封HTML E-mail

下面是一个发送HTML E-mail的例子。假设你的localhost已经连接到网络。

和上一个例子很相似,除了我们要使用setContent()方法来通过第二个参数为"text/html",来设置内容来指定要发送HTML内容。

1 2 3 4 5 6 7 8 9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27 // 文件名 SendHTMLEmail.java

import java.util.*;

import javax.mail.*;

import javax.mail.internet.*;

import javax.activation.*;

public class SendHTMLEmail

{

public static void main(String [] args)

{

// 收件人电子邮箱

String to = "abcd@https://www.360docs.net/doc/f96989148.html,";

// 发件人电子邮箱

String from = "web@https://www.360docs.net/doc/f96989148.html,";

// 指定发送邮件的主机为 localhost

String host = "localhost";

// 获取系统属性

Properties properties = System.getProperties();

// 设置邮件服务器

properties.setProperty("mail.smtp.host", host);

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

// 获取默认的 Session 对象。

Session session = Session.getDefaultInstance(properties);

try{

// 创建默认的 MimeMessage 对象。

MimeMessage message = new MimeMessage(session);

// Set From: 头部头字段

message.setFrom(new InternetAddress(from));

// Set To: 头部头字段

message.addRecipient(Message.RecipientType.TO,

new InternetAddress(to

// Set Subject: 头字段

message.setSubject("This is the Subject Line!");

// 发送 HTML 消息, 可以插入html标签

message.setContent("

This is actual message

",

"text/html" );

// 发送消息

Transport.send(message);

System.out.println("Sent message successfully....");

}catch (MessagingException mex) {

mex.printStackTrace();

}

}

}

编译并运行此程序来发送HTML e-mail:

1 2 $ java SendHTMLEmail

Sent message successfully....

发送带有附件的 E-mail

下面是一个发送带有附件的 E-mail的例子。假设你的localhost已经连接到网络。

1 2 3 4 5 6 7 8 9

10

11

12

13

14

15

16

17

18

19

20

21

22 // 文件名 SendFileEmail.java

import java.util.*;

import javax.mail.*;

import javax.mail.internet.*;

import javax.activation.*;

public class SendFileEmail

{

public static void main(String [] args)

{

// 收件人电子邮箱

String to = "abcd@https://www.360docs.net/doc/f96989148.html,";

// 发件人电子邮箱

String from = "web@https://www.360docs.net/doc/f96989148.html,";

// 指定发送邮件的主机为 localhost

String host = "localhost";

// 获取系统属性

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51 Properties properties = System.getProperties();

// 设置邮件服务器

properties.setProperty("mail.smtp.host", host);

// 获取默认的 Session 对象。

Session session = Session.getDefaultInstance(properties);

try{

// 创建默认的 MimeMessage 对象。

MimeMessage message = new MimeMessage(session);

// Set From: 头部头字段

message.setFrom(new InternetAddress(from));

// Set To: 头部头字段

message.addRecipient(Message.RecipientType.TO,

new InternetAddress(to

// Set Subject: 头字段

message.setSubject("This is the Subject Line!");

// 创建消息部分

BodyPart messageBodyPart = new MimeBodyPart();

// 消息

messageBodyPart.setText("This is message body");

// 创建多重消息

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

Multipart multipart = new MimeMultipart();

// 设置文本消息部分

multipart.addBodyPart(messageBodyPart);

// 附件部分

messageBodyPart = new MimeBodyPart();

String filename = "file.txt";

DataSource source = new FileDataSource(filename);

messageBodyPart.setDataHandler(new DataHandler(source));

messageBodyPart.setFileName(filename);

multipart.addBodyPart(messageBodyPart);

// 发送完整消息

message.setContent(multipart );

// 发送消息

Transport.send(message);

System.out.println("Sent message successfully....");

}catch (MessagingException mex) {

mex.printStackTrace();

}

}

}

编译并运行你的程序来发送一封带有附件的邮件。

1 2 $ java SendFileEmail

Sent message successfully....

用户认证部分

如果需要提供用户名和密码给e-mail服务器来达到用户认证的目的,你可以通过如下设置来完成:

1 2 props.setProperty("https://www.360docs.net/doc/f96989148.html,er", "myuser"); props.setProperty("mail.password", "mypwd");

e-mail其他的发送机制和上述保持一致。

JAVA简单邮件发送客户端程序设计

武汉长江工商学院 工学院 项目名称:简单邮件发送客户端 程序设计 学生姓名: 学号: 班级: 指导老师: 年月日

目录

.设计概述 电子邮件(,简称,标志:,也被大家昵称为“”)又称、电子邮政,它是—种用电子手段提供信息交换的通信方式。是应用最广的服务:通过网络的,用户可以用非常低廉的价格(不管发送到哪里,都只需负担电话费和网费即可),以非常快速的方式(几秒钟之内可以发送到世界上任何你指定的目的地),与世界上任何一个角落的网络用户联系,这些电子邮件可以是文字、图像、声音等各种方式。同时,用户可以得到大量免费的新闻、专题邮件,并实现轻松的信息搜索。 电子邮件的处理有两大部分组成:电子邮件在上发送和接收的原理可以很形象地用我们日常生活中邮寄包裹来形容:当我们要寄一个包裹时,我们首先要找到任何一个有这项业务的邮局,在填写完收件人姓名、地址等等之后包裹就寄出而到了收件人所在地的,那么对方取包裹的时候就必须去这个邮局才能取出。同样的,当我们发送电子邮件时,这封邮件是由邮件发送(任何一个都可以)发出,并根据收信人的地址判断对方的邮件接收服务器而将这封信发送到该服务器上,收信人要收取邮件也只能访问这个服务器才能完成。 本系统使用作为开发工具,开发一个电子邮件发送端应用程序。系统实现的功能主要有帐号设置,发送及添加附件,托盘程序等。 本例发送程序采取了与发送邮件服务器连接实现电子邮件的发送。用户在“收件人邮箱”所对应的对话框中输入收件人的地址,并在账号设置窗口所对的对话框中输入发信人的地址,设置好账号后,进入主对话框编辑信件的正文(本程序还可以发送附件,直接选择路径,就可以发送附件),然后单击“发送”按钮,便可完成电子邮件的发送。电子邮件发送成功,程序将弹出一个“发送成功”的消息对话框;若电子邮件发送失败,程序将给出失败的相关信息。 .电子邮件发送协议与技术 协议简介及通讯模型 (: )即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式。它能够在传送中接力传送邮件,传送服务提供了进程间通信环境(),此环境可以包括一个网络,几个网络或一个网络的子网。理解到传送系统(或)不是一对一的是很重要的。进程可能直接和其它进程通过已知的通信。邮件是一个应用程序或进程间通信。邮件可以通过连接在不同上的进程跨网络进行邮件传送。更特别的是,邮件可以通过不同网络上的主机接力式传送。协议属于/协议族,它帮助每台计算机在发送或中转信件时找到下一个目的地。通过协议所指定的服务器,我们就可以把-寄到收信人的服务器上了,整个过程只要几分钟。服务器则是遵循协议的发送邮件服务器,用来发送或中转你发出的电子邮件。 是一种提供可靠且有效电子邮件传输的协议。是建模在文件传输服务上的一种邮件服务,主要用于传输系统之间的邮件信息并提供来信有关的通知。 独立于特定的传输子系统,而且仅要求一条可以保证传送数据单元顺序的通道且只需要可靠有序的数据流信道支持。重要特性之一是其能跨越网络传输邮件,即“ 邮件中继”。通常,一个网络可以由公用互联网上可相互访问的主机、防火墙分隔的网络上可相互访问的主机,及其它中的主机利用非传输层协议组成。使用,可实现相同网络上处理机之间的邮件传输,也可通过中继器或网关实现某处理机与其它网络之间的邮件传输。 在这种方式下,邮件的发送可能经过从发送端到接收端路径上的大量中间中继器或网关主机。域名服务系统()的邮件交换服务器可以用来识别出传输邮件的下一跳地址。在传输文件过程中使用号端口。 可大致用下面的图来表示。

java循环结构while基础入门

1 while循环的基本格式 /* while循环的基本格式: while(判断条件语句) { 循环体语句; } 扩展格式: 初始化语句; while(判断条件语句) { 循环体语句; 控制条件语句; } 通过这个格式,我们就可以看到其实和for循环是差不多的。 for(初始化语句;判断条件语句;控制条件语句) { 循环体语句; } */ class WhileDemo { public static void main(String[] args) { //输出10次"HelloWorld" //for语句版 for(int x=0; x<10; x++) {

System.out.println("HelloWorld"); } System.out.println("--------------"); //while语句版 int x=0; while(x<10) { System.out.println("HelloWorld"); x++; } } } 2 while循环的实现 /* 练习:用while循环实现 左边:求出1-100之和 右边:统计水仙花数有多少个 初始化语句; while(判断条件语句) { 循环体语句; 控制条件语句; } for(初始化语句;判断条件语句;控制条件语句) {

循环体语句; } */ class WhileDemo2 { public static void main(String[] args) { //求出1-100之和 //for语句版本 int sum = 0; for(int x=1; x<=100; x++) { sum+=x; } System.out.println("sum:"+sum); System.out.println("--------"); //while语句版本 int sum2 = 0; int y=1; while(y<=100) { sum2+=y; y++; } System.out.println("sum2:"+sum2); System.out.println("--------"); } }

Java——简单邮件发送客户端实现

这个程序主要就是实现一个简单的邮件客户端,在知道邮箱服务器pop3地址的情况下可以实现随意填写发信人地址给指定用户发邮件。代码如下: importjava.awt.*; importjava.awt.event.*; import java.io.*; import https://www.360docs.net/doc/f96989148.html,.*; importjavax.swing.*; importjavax.swing.border.BevelBorder; public class Mailclient extends JFrame { publicMailclient() { JPanel p = new JPanel();//create the GUI JPanel p1 = new JPanel(); JPanel p2 = new JPanel(); JPanel p3 = new JPanel(); JPanel p4 = new JPanel(); JPanel p5 = new JPanel(); JButton Send = new JButton("Send");//three button JButton Clear = new JButton("Clear"); JButton Quit = new JButton("Quit"); String defult = "You can change the information or use the defult, and you can get the run information from Java Console."; //create the default mail text finalJTextArea messages = new JTextArea(defult, 22, 40); messages.setLineWrap(true);//auto line feed messages.setBorder(new BevelBorder(BevelBorder.LOWERED, Color.gray, Color.gray)); p1.add(new JLabel("From: ")); finalJTextField jtf1 = new JTextField("android_757@https://www.360docs.net/doc/f96989148.html,", 38); p1.add(jtf1); p2.add(new JLabel("To: ")); finalJTextField jtf2 = new JTextField("android_757@https://www.360docs.net/doc/f96989148.html,", 40); p2.add(jtf2); p3.add(new JLabel("Subject: ")); finalJTextField jtf3 = new JTextField("Test Mailclient", 37); p3.add(jtf3); p5.add(new JLabel("Mail Server Name: ")); finalJTextField jtf4 = new JTextField("https://www.360docs.net/doc/f96989148.html,", 32); p5.add(jtf4); p4.add(Send); Send.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e){

java循环练习及答案

循环练习 1、实现一个课程名称和课程代号的转换器:输入下表中的课程代号,输出课程的名称。用户可以循环进行输入,如果输入n就退出系统。(使用do-while循环实现) public class A2 { public static void main(String[] args) { Scanner scanner=new Scanner(System.in); String ke=""; do { S ystem.out.println("请输入代码:"); k e=scanner.next(); i f(ke.equals("1")){ System.out.println("使用Java语言理解程序逻辑"); } i f(ke.equals("2")){ System.out.println("使用HTML语言开发商业站点"); } i f(ke.equals("3")){ System.out.println("使用SQL Server管理和查询数据"); } i f(ke.equals("4")){ System.out.println("使用C#开发数据库应用程序"); } i f(ke.equals("n")){ System.out.println("出错!"); break; } } while (true); } } 2、本金10000元存入银行,年利率是千分之三。每过1年,将本金和利息相加作为新的本金。计算5年后,获得的本金是多少?(使用for循环实现)

class A3 { public static void main(String[] args) { double mon = 10000; for( int i = 0; i < 5; i++){ mon *= 1+0.003; } System.out.println("5年后,获得的本金是"+mon+"元"); } } 3、求整数1~100的累加值,但要求跳过所有个位为3的数。(使用for循环实现) public class A4 { public static void main(String[] args) { int i = 0,n=0; for (int a = 0; a < 10; a++) { for (int b = 0; b <= 9; b++) { if (b!=3) { i=a*10+b; n+=i; } } } n+=100; System.out.println(n); } } 4、输入一个正整数N,判断该数是不是质数,如果是质数输出“N是一个质数”,否则输出“N不是质数”。提示:质数的含义:除了1和它本身不能被任何数整除。(使用for循环实现) import java.util.Scanner; public class A5 { public static void main(String[] args) { int n,m=0; Scanner N=new Scanner(System.in); System.out.println("请输入要判断的数字:"); do{ n=N.nextInt(); for (int i = 2; i < n; i++) { if (n%i==0) { m=1; }

java发邮件(word2003)

今天做了一个java发送邮件的小例子,总结一下,愿意和大家交换意见。 相关内容:1、要有两个邮箱(一个发送邮件,一个接收邮件) 2、下载两个jar包(mail-1.4.1.jar,activation-1.1.1.jar) 3、编写一个发送邮件的类(SendMail) 原理:程序利用发送邮件的账号(这里是a123456@https://www.360docs.net/doc/f96989148.html,和密码999999)去登录邮箱服务器(这里是https://www.360docs.net/doc/f96989148.html,)。之后向另外一个邮箱(这里是123456@https://www.360docs.net/doc/f96989148.html,)发送一个邮件,邮件的标题和内容等可以在程序里面设定好 以下代码可以正确运行且发送邮件。注意修改两个邮箱地址 import java.util.Properties; import javax.mail.BodyPart; import javax.mail.Message; import javax.mail.Multipart; import javax.mail.Session; import javax.mail.Transport; import javax.mail.internet.InternetAddress; import javax.mail.internet.MimeBodyPart; import javax.mail.internet.MimeMessage; import javax.mail.internet.MimeMultipart; public class SendMail { private String host= "https://www.360docs.net/doc/f96989148.html,"; // smtp服务器 ,这里是网易126 邮箱服务器地址 private String user = "a123456"; // 用户名,即发送邮件邮箱 (a123456@https://www.360docs.net/doc/f96989148.html,)的名称 private String pwd= "999999"; // 密码,a123456@https://www.360docs.net/doc/f96989148.html, 在https://www.360docs.net/doc/f96989148.html, 的登录密码 private String from = "a123456@https://www.360docs.net/doc/f96989148.html,"; // 发件人地址 private String to = "123456@https://www.360docs.net/doc/f96989148.html,"; // 收件人地址 private String subject = "hello"; // 邮件标题 public void setAddress(String from, String to, String subject) { this.from = from; this.to = to; this.subject = subject; } /** *此方法可以不做修改,直接调用 *@param txt */ public void send(String txt) { Properties props = new Properties(); // 设置发送邮件的邮件服务器的属性(这里使用网易的smtp服务器)

基于Javamail的邮件收取类(可直接使用)

package com.neusoft.mail; import javax.mail.*; import java.io.*; import java.text.*; import java.util.*; import java.util.Enumeration; public class GetMail { String POP3Host=""; //POP3服?器 String mailServerPort="110";//POP3服?器端口号String user=""; //登?POP3服?器的?号 String password=""; //登?POP3服?器的密? boolean validate = true;//是否需要身??? Session session = null; Folder folder = null; Store store = null; //无参数的?造函数 public GetMail() {} public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public String getPOP3Host() { return POP3Host; } public void setPOP3Host(String host) { POP3Host = host;

} public String mailServerPort() { return mailServerPort; } public void mailServerPort(String mailServerPort) { this.mailServerPort = mailServerPort; } public String getUser() { return user; } public void setUser(String user) { https://www.360docs.net/doc/f96989148.html,er = user; } public boolean isValidate() { return validate; } public void setValidate(boolean validate) { this.validate = validate; } //?接?件服?器 public void connect() throws Exception{ //?建一个授????象 POP3Auth auth = new POP3Auth(); auth.setAccount(user,password); //取得一个Session?象 Properties prop=new Properties(); prop.put("mail.pop3.host",POP3Host); prop.put("mail.pop3.port", this.mailServerPort); prop.put("mail.pop3.auth", validate ? "true" : "false"); session = Session.getDefaultInstance(prop,auth); //取得一个Store?象

Java循环结构习题

A,求1到100以内的素数.要求每10个数换一行。 1.public class SuShu{ 2.public static void main(String[] args) { //求1到100的素数,实际就是求2 到99的素数,要知道的知识点是除2以为,所有的偶数都是素数。 3.inti,y;//必须在for语句之前定义,可以不对变量赋值 4.int t=0; 5.for(i=2;i<=99;i++){ 6. for( y=2;y<=i;y++) 7. { if(i%y==0) 8. break; 9. } 10.if(y==i){ 11.System.out.print(" "+y); 12.t++; 13.} 14. if(t%10==0){ 15.System.out.println(); 16. } 17. 18. 19.} 20.} 21.} B,一个自然数是素数,且它的数字位置任意对换后形成的数仍未素数,这种数叫做绝对素数,例如13 和31。编写一个程序,显示100以内的所有绝对素数。 分析,由题意可以知道必须是两位数字,而且只能有1、3、7、9组合,个位为5的能被5整数,不是素数。 publicclass Demo{ publicstaticvoid main(String[] args) { for(int i=10;i<=100;i++) { if(isSushu(i)&&isSushu(conveter(i))) { System.out.print(i+" "); }

} } staticboolean isSushu(int i)//i是否为素数 { int j=2; //用2到i-1之间的任一整数去整除 for(;j

JAVA邮件发送

本文介绍了如何利用Java的网络API来实现一个电子邮件工具程序。通常Email工具都是使用SMTP(简单邮件传输协议,Simple Mail Transfer Protocol)来发送邮件,使用POP3协议来接受电子邮件。在本文中只对这两个协议作简单介绍。如果有兴趣的读者可以参考以下站点: POP3: ftp://https://www.360docs.net/doc/f96989148.html,/in-notes/rfc1939.txt SMTP: ftp://https://www.360docs.net/doc/f96989148.html,/in-notes/rfc2821.txt Java中虽然提供了JavaMail API,但是由于在这篇文章中我将从底层来探讨电子邮件软件是如何工作的,因此不会使用JavaMail API。本文中的例子是在J2SE 1.4下开发的。 电子邮件的格式 在开发Email软件之前,你需要了解电子邮件的格式。根据RFC 2882(https://www.360docs.net/doc/f96989148.html,/rfcs/rfc2822.html)的规定,电子邮件由很多行组成,每行由〈CRLF〉(ASCII代码13和ASCII代码10)结束。每行的最大长度为998个字符。其中有些行提供了收发电子邮件所必需的信息,这些行被称为头(Header),所有的头构成了头域(Header Field)。其他的行用于保存邮件的具体内容。 头域提供了很多信息,其中包括邮件的来源;邮件的目的地和邮件的主题等。每个头由名称和冒号加上相应的值构成。例如From:、Send:和Reply-To:中记录了邮件的来源。在From:中记录的是邮件的作者;在Sender:中指定了发送邮件的代理(可以是邮件地址,也可以是机器名称);Reply-To:中指定了接受回信的邮箱地址。 一封邮件可能有多个作者,因此From:中可以指定一个或多个邮箱地址。下面给出了一个个From:的例子: From: Ray Feng 〈rayfeng@https://www.360docs.net/doc/f96989148.html,〉, bogus@https://www.360docs.net/doc/f96989148.html, 在一封电子邮件中只能有一个Sender。因此Sender:的值只能包含一个邮箱地址。如果在From:中只有一个作者,而且Sender:的值和From:的值相同,则Sender:就不会出现在电子邮件中,否则会出现信息冗余;反之Sender:则应该出现在邮件中。下面是一个Sender:的例子: Sender: Ray Feng rayfeng@https://www.360docs.net/doc/f96989148.html, 在电子邮件中可以指定将回信发送到多个邮箱地址中。因此Reply-To:中可以包含一个或多个邮箱地址,每个地址之间用逗号隔开。如果邮件中有Reply-To:,回信会被发送到罗列在

Java发送邮件(文本和附件)

Java发送邮件(文本和附件) Author:zxw Time:2015-05-07 一、Java发送邮件:文件 package com; import java.io.IOException; import java.io.InputStream; import java.util.Properties; import javax.mail.Message; import javax.mail.MessagingException; import javax.mail.Session; import javax.mail.Transport; import javax.mail.internet.InternetAddress; import javax.mail.internet.MimeMessage; import javax.mail.internet.MimeUtility; /** * Java发送文件信息 *

*实现java发送邮件的过程大体有以下几步: *准备一个properties文件,该文件中存放SMTP服务器地址等参数。 *利用properties创建一个Session对象 *利用Session创建Message对象,然后设置邮件主题和正文 *利用Transport对象发送邮件 *需要的jar有2个:activation.jar和mail.jar * */ public class JavaMailWithText { /** * Message对象将存储我们实际发送的电子邮件信息, * Message对象被作为一个MimeMessage对象来创建并且需要知道应当选择哪一个JavaMail session。 */ private MimeMessage message; /** * Session类代表JavaMail中的一个邮件会话。 * 每一个基于JavaMail的应用程序至少有一个Session (可以有任意多的Session)。

java编写SMTP邮件服务器

11.1 电子邮件系统工作原理 电子邮件是因特网上最为流行的应用之一,它主要包括如下组成部分:用户代理、邮件服务器、简单邮件传输协议(simple Mail Transfer Protocol,简称SMTP)、邮件消息格式、邮件访问协议。图11.1展示了因特网电子邮件系统的概貌。在下文对电子邮件系统各组成部分的说明中,以发信人A1ice给收信人Bob发送电子邮件消息作为例子。 图11.1 因特网电子邮件系统概貌 1.用户代理 用户代理提供用户阅读、保存、回复、转发、编写、发送和删除邮件消息等功能。Alice写完电子邮件消息后,其用户代理把这个消息发送给Alice邮箱所在的邮件服务器,再由该邮件服务器把这个消息放入外出消息队列中并负责发送到Bob邮箱所在的邮件服务器。当Bob想阅读电子邮件消息时,其用户代理将从其邮件服务器上的邮箱中取得邮件。20世纪90年代后期,图形用户界面(GUI)的电子邮件用户代理变得流行起来,允许用户阅读和编写多媒体消息。当前流行的用户代理包括Outlook、Foxmail等。 2.邮件服务器 邮件服务器构成了电子邮件系统的核心。每个收信人都有一个位于某个邮件服务器上的邮箱(mailbox)。Bob的邮箱用于管理和维护已经发送给他的邮件消息。一个邮件消息的典型流程是从发信人的用户代理开始,经发信人邮箱所在的邮件服务器,中转到收信人邮箱所在的邮件服务器,然后投递到收信人的邮箱中。当Bob想查看自己的邮箱中的邮件消息时,其邮箱所在的邮件服务器将以他提供的用户名和口令认证他。Alice邮箱所在邮件服务器还必须处理Bob邮箱所在邮件服务器出故障的情况。如果Alice方的邮件服务器无法把邮件消息立即递送到Bob方的邮件服务器,则A1ice方的服务器就把它们存放在消息队列(message queue)中,以后再尝试递送。这种尝试通常每30分钟左右执行一次:要是过了若干天仍未尝试成功,该服务器就把这个消息从消息队列中删除,同时以另一个邮件消息通知发信人(即Alice)。 3.简单邮件传输协议SMTP

Java发送邮件

Java 发送 使用Java应用程序发送E-mail十分简单,但是首先你应该在你的机器上安装JavaMail API 和Java Activation Framework (JAF) 。 ?您可以从Java 下载最新版本的JavaMail,打开网页右侧有个Downloads,点击它下载。?您可以从Java 下载最新版本的JAF(版本1.1.1)。 你也可以使用本站提供的下载: ?JavaMail mail.jar 1.4.5 ? ?JAF(版本1.1.1)activation.jar ? 下载并解压缩这些文件,在新创建的顶层目录中,您会发现这两个应用程序的一些jar 文件。您需要把mail.jar和activation.jar文件添加到您的CLASSPATH 中。 如果你使用第三方服务器如QQ的SMTP服务器,可查看文章底部用户认证完整的实例。 发送一封简单的E-mail 下面是一个发送简单E-mail的例子。假设你的localhost已经连接到网络。

// 收件人电子 String to = "abcdgmail."; // 发件人电子 String from = "webgmail."; // 指定发送的主机为localhost String host = "localhost"; // 获取系统属性 Properties properties = System.getProperties(); // 设置服务器 properties.setProperty("mail.smtp.host", host); // 获取默认session对象 Session session = Session.getDefaultInstance(properties); try{ // 创建默认的MimeMessage 对象 MimeMessage message = new MimeMessage(session); // Set From: 头部头字段 message.setFrom(new InternetAddress(from)); // Set To: 头部头字段

基于Javamail的邮件收发系统-使用说明

基于Javamail的邮件收发系统使用说明书 基于Javamail的邮件收发系统是一款简单、方便、快捷的邮件系统。它能实现邮件的接收与发送,并能完成附件的传输,具有较好的人机交互性,易于使用。 开发环境:JDK1.6 + Windows平台 开发技术:Javamail 开发工具:Eclipse3.4 运行环境:PC上需安装JDK1.6,且正确配置环境变量。 系统基本功能如下: (1) 收取并显示POP3邮件服务器上指定邮箱的邮件; (2) 使用SMTP邮件服务器发送邮件; (3) 邮件附件的发送与接受; (4) 删除邮件; 具体操作步骤如下: 1、打开javamailsystem文件夹,找到javamail.jar可执行文件,双击该执行文件,即可打开 Javamail邮件收发系统客户端软件。进入该系统后,首先选择“POP3/SMTP设置”按钮,对收发邮件所需的邮件服务器主机、收发邮件账号及密码信息进行设置。 图1-1邮件客户端主界面 设置举例如下:

POP3属性 POP3服务器:https://www.360docs.net/doc/f96989148.html,(或https://www.360docs.net/doc/f96989148.html,或https://www.360docs.net/doc/f96989148.html,) Email地址:shinning191@https://www.360docs.net/doc/f96989148.html,(ceshi2009ok@https://www.360docs.net/doc/f96989148.html,、qiufeng006@https://www.360docs.net/doc/f96989148.html,) 账户名:shinning191(ceshi2009ok、qiufeng006) 密码:6857191(123456、28912786) SMTP属性 SMTP服务器:https://www.360docs.net/doc/f96989148.html,(或https://www.360docs.net/doc/f96989148.html,或https://www.360docs.net/doc/f96989148.html,) Email地址:shinning191@https://www.360docs.net/doc/f96989148.html,(ceshi2009ok@https://www.360docs.net/doc/f96989148.html,\qiufeng006@https://www.360docs.net/doc/f96989148.html,) 账户名:shinning191(ceshi2009ok、qiufeng006) 密码:6857191(123456、28912786) 在对SMTP/POP3进行设置的时候,由于系统的缺陷,需要先对POP3进行属性设置,然后确定关闭该对话框;重新打开属性设置对话框,对SMTP进行属性设置,确定。这样便可以正确设置完邮件服务器的属性。 此系统对上述设置的信息具有存储功能,在这里,我们采用属性文件的形式存储SMT P 和POP3邮件服务器属性设置。相关属性值分别保存在pop3.properties和smtp.properties文

java发送邮件及邮件附件代码实例

package com.zlz3907.mail; import java.io.BufferedReader; import java.io.File; import java.io.; import java.io.; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.PrintWriter; import java.io.UnsupportedEncodingException; import https://www.360docs.net/doc/f96989148.html,.Socket; import java.nio.charset.Charset; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; import sun.misc.BASE64Encoder; /** * 该类使用Socket连接到邮件服务器, * 并实现了向指定邮箱发送邮件及附件的功能。 * * @author Zhong Lizhi */ public class Mail { /** * 换行符 */ private static final String LINE_END = "\r\n"; /** * 值为“true”输出高度信息(包括服务器响应信息),值为“* fa lse”则不输出调试信息。 */ private boolean isDebug = true; /** * 值为“true”则在发送邮件{@link Mail#send()} * 过程中会读取服务器端返回的消息, * 并在邮件发送完毕后将这些消息返回给用户。

JAVAMAIL发送邮件实例 给多人发送、抄送

JavaMail,顾名思义,提供给开发者处理电子邮件相关的编程接口。它是Sun发布的用来处理email的API。它可以方便地执行一些常用的邮件传输。我们可以基于JavaMail开发出类似于Microsoft Outlook的应用程序。 虽然JavaMail是Sun的API之一,但它目前还没有被加在标准的java开发工具包中(Java Development Kit),这就意味着你在使用前必须另外下载JavaMail文件。 JavaMail包中用于处理电子邮件的核心类是: Session,Message,Address,Authenticator,Transport,Store,Folder等。Session定义了一个基本的邮件会话,它需要从Properties中读取类似于邮件服务器,用户名和密码等信息。 关键技术: 1、MimeMessage的setRecipients方法设置邮件的收件人,其中Message.RecipientType.TO常量表示收件人类型是邮件接收者,https://www.360docs.net/doc/f96989148.html,常量表示收件人类型是抄送者, Message.RecipientType.BCC常量表示收件人的类型是密送着。 2、在调用MimeMessage的setRecipients方法时,除了可以指定收件人的类型外,还可以传入一个数组, 指定多个收件人的地址。 import javax.mail.Address; import javax.mail.BodyPart; import javax.mail.Message; import javax.mail.MessagingException; import javax.mail.Multipart; import javax.mail.Session; import javax.mail.Transport; import javax.mail.internet.InternetAddress; import javax.mail.internet.MimeBodyPart; import javax.mail.internet.MimeMessage; import javax.mail.internet.MimeMultipart; public class MultiMailsender{

java发送邮件(群发单显)

需要引入mail-1.4.jar packagecom.mails.service; importjava.io.PrintWriter; importjava.io.UnsupportedEncodingException; importjava.text.SimpleDateFormat; importjava.util.Date; importjava.util.Properties; importjava.util.Vector; importjavax.mail.Message; importjavax.mail.Session; importjavax.mail.Transport; importjavax.mail.internet.InternetAddress; importjavax.mail.internet.MimeBodyPart; importjavax.mail.internet.MimeMessage; importjavax.servlet.http.HttpServlet; importjavax.servlet.http.HttpServletRequest; importjavax.servlet.http.HttpServletResponse; /********************************* *群发单显 * authorzhang *2013-12-11 ********************************/ public class SendMails extends HttpServlet{ public static final String mailAddress = "xxxxxxxxxx@https://www.360docs.net/doc/f96989148.html,";//你的邮箱 public static final String mailUsername = "xxxxxxxxxx@https://www.360docs.net/doc/f96989148.html,";//用户名你的邮箱的用户名 public static final String mailPassword = "axxxxxx";//邮箱密码 public static final String mailServer = "https://www.360docs.net/doc/f96989148.html,"; /** * */ private static final long serialVersionUID = 3862187047161135701L; public void doGet(HttpServletRequestreq,HttpServletResponse res){ this.process(req, res); } public void doPost(HttpServletRequestreq,HttpServletResponse res){ this.process(req, res); }

JAVA邮件项目

邮件服务器按功能来分有两种:收邮件,发邮件 SMTP :专门发邮件的POP3:专门收邮件的2,邮件客户端软件现在主流的都是网页版的邮件客户端 Windows 系统自带的Outlook 软件,就是一个典型的邮件客户端软件比较有名的还有FoxMail ,也是邮件客户端软件 3,邮件传输协议 126163 QQ sohu

方法

This inner class extends the javax.mail.Message.RecipientType class to add additional RecipientTypes. 这个类有几个常量 案例,创建一个纯文本邮件,包括发件人,收件人,主题,正文 package com; import java.io.FileOutputStream; import java.util.Date; import java.util.Properties;

import javax.mail.Session; import javax.mail.internet.InternetAddress; import javax.mail.internet.MimeMessage; public class TextMessage{ public static void main(String[]args)throws Exception{ //收信人 String to="javamialto@https://www.360docs.net/doc/f96989148.html,"; //发件人 String from="javamialfrom@https://www.360docs.net/doc/f96989148.html,"; //主题 String subject="test2"; //正文文本 String text="test2-text"; //建立会话,保存信息 Session session=Session.getDefaultInstance(new Properties()); //创建MimeMessage对象 MimeMessage msg=new MimeMessage(session); msg.setFrom(new InternetAddress(from)); msg.setRecipients(MimeMessage.RecipientType.TO,InternetAddress.parse(to)); msg.setSentDate(new Date()); msg.setSubject(subject); msg.setText(text); msg.saveChanges();//保存邮件 msg.writeTo(new FileOutputStream("E:\\test2.eml")); }

相关文档
最新文档