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
分享到:
相关推荐
本文将介绍一种更为简便的方法——通过外部 SMTP 服务器来发送邮件,这种方法可以避免复杂的本地邮件服务器配置,更加高效且易于管理。 #### 关闭 sendmail 和 postfix 服务 为了确保邮件发送任务不会被本地的 ...
- **6.2.2 实例——Servlet版本HelloWorld**:通过创建一个简单的 HelloWorld 示例来演示如何使用 Servlet 处理请求。 #### 第7章 数据操作 在这一章中,将介绍如何在 Google App Engine 上进行数据操作: ##### ...
### VBS脚本学习指南——基础知识与应用 #### 一、VBS脚本概述 VBS,即Microsoft Visual Basic Script Edition(微软可视化BASIC脚本版),是Microsoft为Windows操作系统提供的一种轻量级脚本语言。它基于Visual ...
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 同步和...
HtmlBody="<h1>Hello, World!</h1>" ) ) ``` 即可完成邮件的发送。 总结来说,tencentcloud-sdk-python-ses-3.0.352.tar.gz是Python开发者利用腾讯云SES服务的重要工具,它通过简洁的API接口,使得邮件发送任务...
- **示例**:`mail -s "Subject" recipient@example.com < message.txt` —— 发送邮件。 ##### mkdir - **功能**:创建目录。 - **用途**:组织文件。 - **示例**:`mkdir directory` —— 创建名为 `directory` ...
- **异步处理**:对于耗时的操作,如发送邮件或生成报表,可以通过消息队列进行异步处理,提高系统的响应速度。 - **解耦组件**:系统中的各个部分可以通过消息队列通信,减少直接依赖,增强系统的可维护性。 - **...
4. **日常操作自动化**:如定时开关机、自动发送邮件等功能。 #### 二、VBS与传统编程语言的区别 VBS虽然具备大部分高级语言的功能,但其与传统的编程语言如C++、Java等存在明显差异: 1. **无需编译**:VBS脚本...
当用户申请书籍时,系统可以自动发送邮件通知捐赠者。配置好SMTP服务器后,可以创建一个发送邮件的函数: ```python from flask_mail import Mail, Message def send_email(to, subject, body): mail = Mail(app)...
无论是接收或发送邮件,还是消费和暴露Web服务,Mule都能提供相应的解决方案。IMAP和SMTP传输用于邮件处理,而CXF和HTTP传输则分别支持SOAP和RESTful服务的交互。 #### 异步消息与同步JMS Mule的JMS传输支持异步...
”应用程序 (Writing Your First HelloWorld! Application) 本章将指导读者通过一个简单的“Hello World!”项目来熟悉iOS开发流程。读者将学会如何在Xcode中创建新项目、编写代码、编译并运行应用程序。 ##### 3. ...
6. **JavaMail API**: J2EE提供JavaMail API来处理邮件服务,可以发送、接收和管理电子邮件。 7. **Java Message Service (JMS)**: JMS是用于异步通信的标准,允许应用之间通过消息传递进行解耦。 8. **Java ...
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 ...
System.out.println(getHMAC("hello world", "secretkey", "HmacSHA256")); } catch (Exception e) { e.printStackTrace(); } } } ``` #### 六、总结 以上介绍了四种在Java开发中常用的加密算法——BASE64、MD...
《ASP基础教材》和《ASP教程》可能涵盖了上述所有概念,并逐步引导读者从创建简单的“Hello, World!”程序到构建完整的Web应用。书籍可能会从安装和配置ASP环境开始,逐步介绍各个知识点,通过实例讲解如何使用脚本...