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
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值