`

HelloWorld系列之——发送邮件

阅读更多
1、邮件发送的原理:网络上的邮件服务器一般包括两个,一个叫smtp服务器,另一个叫pop3服务器。这两个服务器分别有什么作用呢?这个需要从网络发送邮件的过程来分析。邮件从一个用户到另一个用户看到,需要三个过程。首先是邮件由发送者发给一个专门用于发送邮件的服务上(smtp服务器);smtp服务器再根据邮件的地址发送到对应的pop3服务器上;接着邮件接受者用自己的邮箱从pop3上把邮件接收过来(其实就是把邮件从邮件服务器上下载下来)。

2、那么发送邮件的工作就是把一封固定格式的文件上传到smtp服务器上。

3、过程:
1)、建工程,一个普通java工程
2)、导包,java邮件发送需要mail包,在sun网站就能下载到
3)、建立需要的类文件和配置文件,如下:
HelloWorld类
	package util.mail;

	/*
	 * @(#)MailSender.java 1.00 2004-8-3
	 *
	 * Copyright 2004 BeanSoft Studio. All rights reserved.
	 * PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
	 */
	import java.util.*;
	import java.io.*;
	import javax.mail.*;
	import javax.mail.internet.*;
	
	/**
	 * MailSender, 支持基于 SMTP 验证的文本格式邮件发送.
	 * 
	 * @author BeanSoft
	 * @version 1.1 2006-8-1
	 */
	public class MailSender {
		
	    /** 发信人 */
	    private String from;
	    /** 收信人 */
	    private String to;
	    /** 主题 */
	    private String subject;
	    /** 正文 */
	    private String body;
	    
	    private boolean htmlFormat;
	
	    private static Properties props = new Properties();
	    static {
	        try {
	            InputStream in = MailSender.class.getResourceAsStream("MailSender.ini");
	            props.load(in);
	            in.close();
	        } catch (Exception ex) {
	            System.err.println("无法加载配置文件 MailSender.ini:" + ex.getMessage());
	            ex.printStackTrace();
	        }
	    }
	
	    public MailSender() {
	    }
	    
	    /** 
	     * 发送邮件.
	     * @return boolean - 发送结果 
	     */
	    public boolean sendMail() {
	        if (getBody() == null || getTo() == null || getFrom() == null
	                || getSubject() == null) { return false; }
	        //--[ Obtain a session
	        try {
	            //--[ Set up the default parameters
	            //        Properties props = new Properties();
	            //        props.put("mail.transport.protocol", "smtp" );
	            //        props.put("mail.smtp.host", smtpServer );
	            //        props.put("mail.smtp.port", "25" );
	
	            //--[ Create the session and create a new mail message
	    		java.util.Properties propsSmtp = new java.util.Properties();
	    		propsSmtp.put("mail.smtp.auth", "true");
	    		propsSmtp.put("mail.smtp.host", props.get("mail.smtp.host"));
	//    		propsSmtp.put("mail.debug", "true");
	    		
	            Session mailSession = Session.getDefaultInstance(propsSmtp);
	            Message msg = new MimeMessage(mailSession);
	
	            //--[ Set the FROM, TO, DATE and SUBJECT fields
	            msg.setFrom(new InternetAddress(getFrom()));// 设置发件人信息
	            msg.addRecipients(Message.RecipientType.TO, InternetAddress.parse(getTo()));// 设置收件人信息, 可以多次添加收件人
	            msg.setSentDate(new Date());// 设置发送日期
	            msg.setSubject(getSubject());// 设置主题
	
	            //--[ Create the body of the mail
	            if(isHtmlFormat()) {
	            	msg.setContent(getBody(),
	        		"text/html;charset=GBK");// HTML 邮件
	            } else  {
	            	msg.setText(getBody());// 设置邮件的正文
	            }
	           
	
	            Transport transport = mailSession.getTransport("smtp");// 处理连接和发邮件工作
	            transport.connect( propsSmtp.getProperty("mail.smtp.host"), props.getProperty("username"), 
	            		props.getProperty("password"));// connect方法打开连接, SMTP, 发件人帐号, 密码
	
	            transport.sendMessage(msg, msg.getAllRecipients());// send 发邮件
	            
	            transport.close();// 关闭连接
	        } catch (Exception e) {
	            System.out.println(e);
	            //            e.printStackTrace();
	            return false;
	        }
	        return true;
	    }
	
	    /**
	     * @return Returns the body.
	     */
	    public String getBody() {
	        return body;
	    }
	
	    /**
	     * @param body
	     *            The body to set.
	     */
	    public void setBody(String body) {
	        this.body = body;
	    }
	
	    /**
	     * @return Returns the from.
	     */
	    public String getFrom() {
	        return from;
	    }
	
	    /**
	     * @param from
	     *            The from to set.
	     */
	    public void setFrom(String from) {
	        this.from = from;
	    }
	
	    /**
	     * @return Returns the subject.
	     */
	    public String getSubject() {
	        return subject;
	    }
	
	    /**
	     * @param subject
	     *            The subject to set.
	     */
	    public void setSubject(String subject) {
	        this.subject = subject;
	    }
	
	    /**
	     * @return Returns the to.
	     */
	    public String getTo() {
	        return to;
	    }
	
	    /**
	     * @param to
	     *            The to to set.
	     */
	    public void setTo(String to) {
	        this.to = to;
	    }
	
	    public static void main(String[] args) {
	        MailSender sender = new MailSender();
	
	        sender.setFrom("\"Admin\" <admin@earth.org>");
	        sender.setTo("348881219@qq.com");
	        sender.setSubject("测试发送");
	        sender.setBody("测试发送");
	
	        System.out.println(sender.sendMail());
	    }
	
		public boolean isHtmlFormat() {
			return htmlFormat;
		}
	
		public void setHtmlFormat(boolean htmlFormat) {
			this.htmlFormat = htmlFormat;
		}
	}


配置文件:MailSender.ini
# SMTP 主机地址
mail.smtp.host=localhost
# SMTP 帐号用户名
username=admin@itcast.cn
# SMTP 帐号密码
password=1234
mail.transport.protocol = smtp
mail.smtp.port = 25
mail.smtp.auth=true
mail.debug=true


分享到:
评论

相关推荐

    Linux 发送邮件

    本文将介绍一种更为简便的方法——通过外部 SMTP 服务器来发送邮件,这种方法可以避免复杂的本地邮件服务器配置,更加高效且易于管理。 #### 关闭 sendmail 和 postfix 服务 为了确保邮件发送任务不会被本地的 ...

    云应用开发 ——Google App Engine & Google Web Toolkit入门指南

    - **6.2.2 实例——Servlet版本HelloWorld**:通过创建一个简单的 HelloWorld 示例来演示如何使用 Servlet 处理请求。 #### 第7章 数据操作 在这一章中,将介绍如何在 Google App Engine 上进行数据操作: ##### ...

    VBS脚本学习指南,适合初学者

    ### VBS脚本学习指南——基础知识与应用 #### 一、VBS脚本概述 VBS,即Microsoft Visual Basic Script Edition(微软可视化BASIC脚本版),是Microsoft为Windows操作系统提供的一种轻量级脚本语言。它基于Visual ...

    从Java走向Java+EE+.rar

    17.3 实例——分布式的HelloWorld 260 17.4 小结 264 第18章 Java消息服务 265 18.1 消息系统和JMS 265 18.1.1 JMS API 265 18.1.2 点对点消息模式 266 18.1.3 发布者/订阅者模式 267 18.1.4 同步和...

    PyPI 官网下载 | tencentcloud-sdk-python-ses-3.0.352.tar.gz

    HtmlBody="&lt;h1&gt;Hello, World!&lt;/h1&gt;" ) ) ``` 即可完成邮件的发送。 总结来说,tencentcloud-sdk-python-ses-3.0.352.tar.gz是Python开发者利用腾讯云SES服务的重要工具,它通过简洁的API接口,使得邮件发送任务...

    UnixBible

    - **示例**:`mail -s "Subject" recipient@example.com &lt; message.txt` —— 发送邮件。 ##### mkdir - **功能**:创建目录。 - **用途**:组织文件。 - **示例**:`mkdir directory` —— 创建名为 `directory` ...

    RabbitMQ实战pdf高清

    - **异步处理**:对于耗时的操作,如发送邮件或生成报表,可以通过消息队列进行异步处理,提高系统的响应速度。 - **解耦组件**:系统中的各个部分可以通过消息队列通信,减少直接依赖,增强系统的可维护性。 - **...

    vbs教程.pdf

    4. **日常操作自动化**:如定时开关机、自动发送邮件等功能。 #### 二、VBS与传统编程语言的区别 VBS虽然具备大部分高级语言的功能,但其与传统的编程语言如C++、Java等存在明显差异: 1. **无需编译**:VBS脚本...

    Python-使用Python的Flask框架结合一系列第三方库来构建公益赠书平台鱼书

    当用户申请书籍时,系统可以自动发送邮件通知捐赠者。配置好SMTP服务器后,可以创建一个发送邮件的函数: ```python from flask_mail import Mail, Message def send_email(to, subject, body): mail = Mail(app)...

    Mule in action下载(英文版)

    无论是接收或发送邮件,还是消费和暴露Web服务,Mule都能提供相应的解决方案。IMAP和SMTP传输用于邮件处理,而CXF和HTTP传输则分别支持SOAP和RESTful服务的交互。 #### 异步消息与同步JMS Mule的JMS传输支持异步...

    Beginning iOS 5 Application Development.pdf

    ”应用程序 (Writing Your First HelloWorld! Application) 本章将指导读者通过一个简单的“Hello World!”项目来熟悉iOS开发流程。读者将学会如何在Xcode中创建新项目、编写代码、编译并运行应用程序。 ##### 3. ...

    一本很不错的J2EE教程

    6. **JavaMail API**: J2EE提供JavaMail API来处理邮件服务,可以发送、接收和管理电子邮件。 7. **Java Message Service (JMS)**: JMS是用于异步通信的标准,允许应用之间通过消息传递进行解耦。 8. **Java ...

    php网络开发完全手册

    1.3.1 第一个PHP程序Hello, world 6 1.3.2 学习PHP应该准备哪些软件 8 1.3.3 相关知识领域的介绍 9 1.4 程序运行环境的搭建 10 1.4.1 Apache简介 10 1.4.2 安装Apache与PHP 10 1.4.3 使用phpinfo()确认Apache与PHP ...

    Java中4大基本加密算法解析

    System.out.println(getHMAC("hello world", "secretkey", "HmacSHA256")); } catch (Exception e) { e.printStackTrace(); } } } ``` #### 六、总结 以上介绍了四种在Java开发中常用的加密算法——BASE64、MD...

    推荐两本关于Asp的基础教材

    《ASP基础教材》和《ASP教程》可能涵盖了上述所有概念,并逐步引导读者从创建简单的“Hello, World!”程序到构建完整的Web应用。书籍可能会从安装和配置ASP环境开始,逐步介绍各个知识点,通过实例讲解如何使用脚本...

Global site tag (gtag.js) - Google Analytics