HelloWorld系列之——发送邮件

4 篇文章 0 订阅
1 篇文章 0 订阅
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


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值