JavaMail邮件传输(SMTP) 门户网站SMTP服务器

1.在编程中,我们可以使用JavaMail来进行邮件传输。

  我们可以在自己的电脑上安装安装邮件服务器apache-james-2.3.2,或者直接使用门户网站的邮件服务器来进行邮件传输。

  本篇讲述使用门户网站的邮件服务器,用java程序来进行邮件传输。

2.邮件传输的协议有SMTP(简单邮件传输协议)和POP3(邮局协议)。

  并不是所有的提供邮箱的网站都会对用户开通SMTP服务器。可以使用的SMTP服务器都需要身份验证的,当然是不可以匿名发邮件的啦。下面给出了腾讯和网易公布的SMTP和POP3服务器地址。

  2.1QQ邮箱服务器

  2.2网易邮箱服务器

3.编程使用SMTP发送邮件(不带附件的)

3.1 MailSenderInfo.java给出要发送邮件的基本信息(类似JavaBean文件),该文件不需要改动

View Code

 1 package src;
 2 /**
 3 * 发送邮件需要使用的基本信息
 4 */
 5 import java.util.Properties;
 6 public class MailSenderInfo {
 7     // 发送邮件的服务器的IP和端口
 8     private String mailServerHost;
 9     private String mailServerPort = "25";
10     // 邮件发送者的地址
11     private String fromAddress;
12     // 邮件接收者的地址
13     private String toAddress;
14     // 登陆邮件发送服务器的用户名和密码
15     private String userName;
16     private String password;
17     // 是否需要身份验证
18     private boolean validate = false;
19     // 邮件主题
20     private String subject;
21     // 邮件的文本内容
22     private String content;
23     // 邮件附件的文件名
24     private String[] attachFileNames;
25     /**
26       * 获得邮件会话属性
27       */
28     public Properties getProperties(){
29       Properties p = new Properties();
30       p.put("mail.smtp.host", this.mailServerHost);
31       p.put("mail.smtp.port", this.mailServerPort);
32       p.put("mail.smtp.auth", validate ? "true" : "false");
33       return p;
34     }
35     public String getMailServerHost() {
36       return mailServerHost;
37     }
38     public void setMailServerHost(String mailServerHost) {
39       this.mailServerHost = mailServerHost;
40     }
41     public String getMailServerPort() {
42       return mailServerPort;
43     }
44     public void setMailServerPort(String mailServerPort) {
45       this.mailServerPort = mailServerPort;
46     }
47     public boolean isValidate() {
48       return validate;
49     }
50     public void setValidate(boolean validate) {
51       this.validate = validate;
52     }
53     public String[] getAttachFileNames() {
54       return attachFileNames;
55     }
56     public void setAttachFileNames(String[] fileNames) {
57       this.attachFileNames = fileNames;
58     }
59     public String getFromAddress() {
60       return fromAddress;
61     }
62     public void setFromAddress(String fromAddress) {
63       this.fromAddress = fromAddress;
64     }
65     public String getPassword() {
66       return password;
67     }
68     public void setPassword(String password) {
69       this.password = password;
70     }
71     public String getToAddress() {
72       return toAddress;
73     }
74     public void setToAddress(String toAddress) {
75       this.toAddress = toAddress;
76     }
77     public String getUserName() {
78       return userName;
79     }
80     public void setUserName(String userName) {
81       this.userName = userName;
82     }
83     public String getSubject() {
84       return subject;
85     }
86     public void setSubject(String subject) {
87       this.subject = subject;
88     }
89     public String getContent() {
90       return content;
91     }
92     public void setContent(String textContent) {
93       this.content = textContent;
94     }
95 }   

3.2  SimpleMailSender.java,设置邮件的通常数据。不需要改动

View Code

  1 package src;
  2
  3 import java.util.Date;
  4 import java.util.Properties;
  5 import javax.mail.Address;
  6 import javax.mail.BodyPart;
  7 import javax.mail.Message;
  8 import javax.mail.MessagingException;
  9 import javax.mail.Multipart;
 10 import javax.mail.Session;
 11 import javax.mail.Transport;
 12 import javax.mail.internet.InternetAddress;
 13 import javax.mail.internet.MimeBodyPart;
 14 import javax.mail.internet.MimeMessage;
 15 import javax.mail.internet.MimeMultipart;
 16
 17 /**
 18 * 简单邮件(不带附件的邮件)发送器
 19 */
 20 public class SimpleMailSender  {
 21 /**
 22   * 以文本格式发送邮件
 23   * @param mailInfo 待发送的邮件的信息
 24   */
 25     public boolean sendTextMail(MailSenderInfo mailInfo) {
 26       // 判断是否需要身份认证
 27       MyAuthenticator authenticator = null;
 28       Properties pro = mailInfo.getProperties();
 29       if (mailInfo.isValidate()) {
 30       // 如果需要身份认证,则创建一个密码验证器
 31         authenticator = new MyAuthenticator(mailInfo.getUserName(), mailInfo.getPassword());
 32       }
 33       // 根据邮件会话属性和密码验证器构造一个发送邮件的session
 34       Session sendMailSession = Session.getDefaultInstance(pro,authenticator);
 35       try {
 36       // 根据session创建一个邮件消息
 37       Message mailMessage = new MimeMessage(sendMailSession);
 38       // 创建邮件发送者地址
 39       Address from = new InternetAddress(mailInfo.getFromAddress());
 40       // 设置邮件消息的发送者
 41       mailMessage.setFrom(from);
 42       // 创建邮件的接收者地址,并设置到邮件消息中
 43       Address to = new InternetAddress(mailInfo.getToAddress());
 44       mailMessage.setRecipient(Message.RecipientType.TO,to);
 45       // 设置邮件消息的主题
 46       mailMessage.setSubject(mailInfo.getSubject());
 47       // 设置邮件消息发送的时间
 48       mailMessage.setSentDate(new Date());
 49       // 设置邮件消息的主要内容
 50       String mailContent = mailInfo.getContent();
 51       mailMessage.setText(mailContent);
 52       // 发送邮件
 53       Transport.send(mailMessage);
 54       return true;
 55       } catch (MessagingException ex) {
 56           ex.printStackTrace();
 57       }
 58       return false;
 59     }
 60
 61     /**
 62       * 以HTML格式发送邮件
 63       * @param mailInfo 待发送的邮件信息
 64       */
 65     public static boolean sendHtmlMail(MailSenderInfo mailInfo){
 66       // 判断是否需要身份认证
 67       MyAuthenticator authenticator = null;
 68       Properties pro = mailInfo.getProperties();
 69       //如果需要身份认证,则创建一个密码验证器
 70       if (mailInfo.isValidate()) {
 71         authenticator = new MyAuthenticator(mailInfo.getUserName(), mailInfo.getPassword());
 72       }
 73       // 根据邮件会话属性和密码验证器构造一个发送邮件的session
 74       Session sendMailSession = Session.getDefaultInstance(pro,authenticator);
 75       try {
 76       // 根据session创建一个邮件消息
 77       Message mailMessage = new MimeMessage(sendMailSession);
 78       // 创建邮件发送者地址
 79       Address from = new InternetAddress(mailInfo.getFromAddress());
 80       // 设置邮件消息的发送者
 81       mailMessage.setFrom(from);
 82       // 创建邮件的接收者地址,并设置到邮件消息中
 83       Address to = new InternetAddress(mailInfo.getToAddress());
 84       // Message.RecipientType.TO属性表示接收者的类型为TO
 85       mailMessage.setRecipient(Message.RecipientType.TO,to);
 86       // 设置邮件消息的主题
 87       mailMessage.setSubject(mailInfo.getSubject());
 88       // 设置邮件消息发送的时间
 89       mailMessage.setSentDate(new Date());
 90       // MiniMultipart类是一个容器类,包含MimeBodyPart类型的对象
 91       Multipart mainPart = new MimeMultipart();
 92       // 创建一个包含HTML内容的MimeBodyPart
 93       BodyPart html = new MimeBodyPart();
 94       // 设置HTML内容
 95       html.setContent(mailInfo.getContent(), "text/html; charset=utf-8");
 96       mainPart.addBodyPart(html);
 97       // 将MiniMultipart对象设置为邮件内容
 98       mailMessage.setContent(mainPart);
 99       // 发送邮件
100       Transport.send(mailMessage);
101       return true;
102       } catch (MessagingException ex) {
103           ex.printStackTrace();
104       }
105       return false;
106     }
107 }   

3.3  MyAuthenticator.java,需要根据自己的邮箱地址,发送的内容,发送地址,使用的服务器的SMTP网址改动

View Code

 1 package src;
 2
 3 import javax.mail.*;
 4
 5 public class MyAuthenticator extends Authenticator{
 6     String userName=null;
 7     String password=null;
 8
 9     public MyAuthenticator(){
10     }
11     public MyAuthenticator(String username, String password) {
12         this.userName = username;
13         this.password = password;
14     }
15     protected PasswordAuthentication getPasswordAuthentication(){
16         return new PasswordAuthentication(userName, password);
17     }
18
19     public static void main(String[] args){
20      //这个类主要是设置邮件
21      MailSenderInfo mailInfo = new MailSenderInfo();
22      mailInfo.setMailServerHost("smtp.qq.com");
23      mailInfo.setMailServerPort("25");
24      mailInfo.setValidate(true);
25      mailInfo.setUserName("1111111@qq.com");   //自己的邮箱
26      mailInfo.setPassword("QQ88888");//自己的邮箱密码,用于验证
27
28      mailInfo.setFromAddress("1111111@qq.com");  ///自己的邮箱
29      mailInfo.setToAddress("66666666@qq.com");   ///对方的邮箱
30      mailInfo.setSubject("设置邮箱标题");
31      mailInfo.setContent("设置邮箱内容");
32
33      //这个类主要来发送邮件
34      SimpleMailSender sms = new SimpleMailSender();
35      sms.sendTextMail(mailInfo);//发送文体格式
36      sms.sendHtmlMail(mailInfo);//发送html格式
37
38    }
39 }
40   

4.使用注意情况
4.1  发送方的邮箱(自己的)必须与程序中使用的服务器的SMTP是一致的。邮件接收方的邮件可以任意。

4.2  因为这只是最简单的邮件传输,不包附件,只有正文部分,并且只是负责邮件的发送,因此只需要SMTP(简单邮件传输协议)。当要读取邮件的时候就必须要使用POP3(邮局协议)。

4.3  程序发邮件可以减少大量的体力劳动。我们也要合理使用,不能捣乱,给其他人大量的发送重复邮件。例如,当用程序给一个邮箱发大量邮件时,可能会被相应的服务器认为是外界攻击。

  我给自己的QQ邮箱,用上面的程序做了一个40次的发送循环。在我自己去QQ邮箱手动删除那些邮件的时候,QQ邮箱可能怀疑这是通过恶意程序发来的。下面是QQ邮箱的提示:

 4.4  通过程序自己的邮件给多个邮箱发信息,应该能行吧,自己也没有尝试,没有那么多邮箱了。有兴趣的大家可以试试,呵呵。

 

参考:

http://www.iteye.com/topic/352753

 

时间: 2024-09-20 07:29:37

JavaMail邮件传输(SMTP) 门户网站SMTP服务器的相关文章

你通晓SaaS吗?不自行搭建门户网站的三大理由

就算你创业家们已经对SaaS动了心,也要关注SalientGroup公司发布的新研究结果: 1.SaaS在获得资金.近50%的基于SaaS的初创公司成功地融到了资金――融资成功率之高是其他行业领域无法企及的. 2.基于SaaS的企业在增长.SaaS市场的增长率比软件市场快3倍(20%比7%),预计这个速度会持续到2020年. 据市场研究机构Gartner声称,总体而言,2015年SaaS市场产值会高达 220亿美元. 不过本文介绍了处于每个阶段的企业组织应该增加SaaS方面认识的几个更主要的原因

简单邮件传输协议SMTP封装类

在Internet上,Email是最流行的传输媒体.这篇文章包括两个协议:. POP 3 协议: POP3协议(邮政传输协议)就是指从Email服务器接收信件.我已经提交了一个封装POP3协议的类.该协议官方的描述你可查阅RFC1225. SMTP协议: SMTP (简单邮件传输协议) 指发送邮件到它的目的地. 有关SMTP 协议的细节你可参考RCF 821 .我最新地贡献是封装了SMTP协议.我不能完全实现 SMTP协议但你可用它在许多应用场合发送邮件.该类有若干方法,我选方法名同SMTP命令

SMTP简单邮件传输协议

SMTP:简单邮件传输协议(Simple Mail Transfer Protocol) SMTP 是一种提供可靠且有效电子邮件传输的协议. SMTP 是建模在 FTP 文件传输服务上的一种邮件服务,主要用于传输系统之间的邮件信息并提供来信有关的通知. SMTP 独立于特定的传输子系统,且只需要可靠有序的数据流信道支持. SMTP 重要特性之一是其能跨越网络传输邮件,即"SMTP 邮件中继".通常,一个网络可以由公用互联网上 TCP 可相互访问的主机.防火墙分隔的 TCP/IP 网络上

本地邮件传输协议:SMTP和LMTP

SMTP需要管理一个队列,一个邮件操作可以把一封邮件发送向不同的接收者,而一个SMTP命令却只有一个返回码,这就带来的问题,如果服务器需要把一个邮件发向两个接收者,发送第一个的时候成功了,而发送第二个时候暂时失败了,服务器必须把这封邮件放入队列,以后再发送,而发送方却不可能知道这一切.SMTP的这种队列机制在最初设计时是为了考虑到转发的需要,但在有些时候,并不需要 服务器管理这个队列,而需要由客户进行队列的管理,我们看一下下面这个例子:上图中有三个独立的通信系统,三个方框内的就是,第一个是 队列

RFC821-简单邮件传输协议(SMTP)中文版 - 0

本文出自: 作者: (2001-11-23 07:08:00) 1. 介绍 简单邮件传输协议(SMTP)的目标是可靠高效地传送邮件,它独立于传 送子系统而且仅要求一条可以保证传送数据单元顺序的通道.附录A,B,C 和D描述了不同传送服务下SMTP的使用.在名词表中还定义了本文档中使用 的术语. SMTP的一个重要特点是它能够在传送中接力传送邮件,传送服务提供了 进程间通信环境(IPCE),此环境可以包括一个网络,几个网络或一个网络 的子网.理解到传送系统(或IPCE)不是一对一的是很重要的.进程

RFC821-简单邮件传输协议(SMTP)中文版 - 1

3.7. 域     域是最近被引入ARPA Internet邮件系统的.使用域可以使地址空间从一 个平面的普通字符串主机名变成全局地址的一个层次结构.主机由一个域名取 代,起始主机是由一系列元串组成,它们由逗号按最特殊到一般的顺序排列. 例如,"USC-ISIF.ARPA","Fred.Cambridge.UK"和"PC7.LCS.MIT.ARPA"可 能是主机-域标识符. 无论域名在SMTP中如何使用,只有正式的名称才可以被使用,不可以使用

PHP在线邮件发送类,通过SMTP来发送

<?  /*  * 邮件发送类 * 作    者:多菜鸟 * 联系邮箱:kingerq AT msn DOT com * 创建时间:2005-08-19 * 注明:此类为改装过来的,忘记出处了 */class smail { //您的SMTP 服务器供应商,可以是域名或IP地址 var $smtp = "smtp.163.com";  //SMTP需要要身份验证设值为 1 不需要身份验证值为 0,现在大多数的SMTP服务商都要验证,如不清楚请与你的smtp 服务商联系. var

在用JavaMail邮件中,邮件中的图片以附件形式发送到服务器,这样在邮件内容和附件中都显示出来,怎样才能让图片不在附件中显示出来?

问题描述 在用JavaMail邮件中,邮件中的图片以附件形式发送到服务器,这样图片在邮件内容和附件中都显示出来,怎样才能让图片不在附件中显示出来? 解决方案 解决方案二:抓个分,谢谢楼主解决方案三:我感觉不是javamail的问题了吧.是ui客户端设置问题吧.解决方案四:在一篇文章里提到了这点说能隐藏,但是没给出具体实现方法,我觉得能隐藏更好,如果全显示在附件中太难看了刚申请的号,就20分~解决方案五:看看张孝祥的邮件视频.我还没看完..好像有.解决方案六:不显示你就在程序中不让它们显示出来三.

政府门户网站一般不得关停 服务器不得放在境外

<政府网站发展指引>(以下简称<指引>)已经国务院同意,由国务院办公厅今日发布.<指引>明确政府门户网站一般不得关停.网站改版升级应在确保正常运行的情况下进行.政府网站由于整改等原因需要临时下线的,由主办单位提出申请. <指引>提出的发展目标,是适应互联网发展变化,推进集约共享,持续开拓创新,到2020年,将政府网站打造成更加全面的政务公开平台.更加权威的政策发布解读和舆论引导平台.更加及时的回应关切和便民服务平台,以中国政府网为龙头.部门和地方各级政府网站