package com.util.mail;
import java.util.Properties;
import javax.activation.DataHandler;
import javax.activation.FileDataSource;
import javax.mail.Address;
import javax.mail.BodyPart;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Multipart;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;
/**
* 发送邮件
*
* @author Admin
*
*/
public class SendMail {
/**
* MiMe 邮件对象
*/
private MimeMessage mimeMsg;
/**
* 保持会话的Session
*/
private Session session;
/**
* 保存系统属性
*/
private Properties props;
/**
* 是否需要验证
*/
private boolean needAuth;
/**
* Multipart 对象,邮件内容、标题、附件等添加完成后生成MimeMessage 对象
*/
private Multipart mp;
/**
* 用户名
*/
private String username = "";
/**
* 密码
*/
private String password = "";
// public SendMail() {
//
// setSmtpHost(getConfig.mailHost);// 如果没有指定邮件服务器,就从getConfig类中获取
//
// createMimeMessage();
//
// }
public SendMail(String smtp) {
setSmtpHost(smtp);
createMimeMessage();
}
/**
*
* @param hostName
* String
*/
public void setSmtpHost(String hostName) { // hostName=smtp.msn.com
System.out.println("设置系统属性:mail.smtp.host = " + hostName);
if (props == null) {
props = System.getProperties(); // 获得系统属性对象
}
/**
* mail.smtp.host 发信服务器地址
*/
props.put("mail.smtp.host", hostName); // 设置SMTP主机
}
/**
*
* @return boolean
*/
public boolean createMimeMessage()
{
try {
System.out.println("准备获取邮件会话对象!");
session = Session.getDefaultInstance(props, null); // 获得邮件会话对象
}
catch (Exception e) {
System.err.println("获取邮件会话对象时发生错误!" + e);
return false;
}
System.out.println("准备创建MIME邮件对象!");
try {
mimeMsg = new MimeMessage(session); // 创建MIME邮件对象
mp = new MimeMultipart();
return true;
}
catch (Exception e) {
System.err.println("创建MIME邮件对象失败!" + e);
return false;
}
}
/**
* 是否需要验证
*
* @param need
* boolean
*/
public void setNeedAuth(boolean need) {
System.out.println("设置smtp身份认证:mail.smtp.auth = " + need);
if (props == null)
props = System.getProperties();
if (need) {
props.put("mail.smtp.auth", "true");
} else {
props.put("mail.smtp.auth", "false");
}
}
/**
*
* @param name
* String
*
* @param pass
* String
*/
public void setNamePass(String name, String pass) {
username = name;
password = pass;
}
/**
* 设置邮件的主题
*
* @param mailSubject
* String
*
* @return boolean
*/
public boolean setSubject(String mailSubject) {
System.out.println("设置邮件主题!");
try {
mimeMsg.setSubject(mailSubject);
} catch (MessagingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return true;
}
/**
*
* @param mailBody
* String
*/
public boolean setBody(String mailBody) {
try {
BodyPart bp = new MimeBodyPart();
bp.setContent("" + mailBody, "text/html;charset=GB2312");
mp.addBodyPart(bp);
return true;
}
catch (Exception e) {
System.err.println("设置邮件正文时发生错误!" + e);
return false;
}
}
/**
*
* @param name
* String
*
* @param pass
* String
*/
public boolean addFileAffix(String filename) {
System.out.println("增加邮件附件:" + filename);
try {
BodyPart bp = new MimeBodyPart();
FileDataSource fileds = new FileDataSource(filename);
bp.setDataHandler(new DataHandler(fileds));
bp.setFileName(fileds.getName());
mp.addBodyPart(bp);
return true;
}
catch (Exception e) {
System.err.println("增加邮件附件:" + filename + "发生错误!" + e);
return false;
}
}
/**
*
* @param name
* String
*
* @param pass
* String
*
* 发信人的地址
*/
public boolean setFrom(String from) {
System.out.println("设置发信人!");
try {
mimeMsg.setFrom(new InternetAddress(from)); // 设置发信人
return true;
}
catch (Exception e)
{
return false;
}
}
/**
*
* @param name
* String
*
* @param pass
* String
*
*
* 收件人的地址
*/
public boolean setTo(String to) {
if (to == null)
return false;
try {
mimeMsg.setRecipients(Message.RecipientType.TO, InternetAddress
.parse(to));
return true;
}
catch (Exception e)
{
return false;
}
}
/**
*
* @param name
* String
*
* @param pass
* String
*/
public boolean setCopyTo(String copyto)
{
if (copyto == null)
return false;
try {
mimeMsg.setRecipients(Message.RecipientType.CC,
(Address[]) InternetAddress.parse(copyto));
return true;
}
catch (Exception e)
{
return false;
}
}
/**
*
* @param name
* String
*
* @param pass
* String
*/
public boolean sendout()
{
try {
mimeMsg.setContent(mp);
mimeMsg.saveChanges();
System.out.println("正在发送邮件....");
Session mailSession = Session.getInstance(props, null);
Transport transport = mailSession.getTransport("smtp");
transport.connect((String) props.get("mail.smtp.host"), username,
password);
transport.sendMessage(mimeMsg, mimeMsg
.getRecipients(Message.RecipientType.TO));
// transport.send(mimeMsg);
System.out.println("发送邮件成功!");
transport.close();
return true;
}
catch (Exception e)
{
System.err.println("邮件发送失败!" + e);
return false;
}
}
/**
*
* Just do it as this
*/
public static void main(String[] args) {
//邮件的主题为字符串
String mailbody = "" + "dear!";
SendMail themail = new SendMail("smtp.126.com"); //发送方服务器的地址
themail.setNeedAuth(true);
if (themail.setSubject("标题") == false){
return;
}
if (themail.setBody(mailbody) == false){
return;
}
if (themail.setTo("接受邮件地址,如: test@163.com") == false){
return;
}
if (themail.setFrom("发送邮件地址,如:2010@126.com") == false){
return;
}
if (themail.addFileAffix("c:\\boot.ini") == false){
return;
}
themail.setNamePass("发送邮件名,和上面对应应该为:2010,注意不要添加:@126.com", "密码");
if (themail.sendout() == false)
return;
}
}
注意要导入javamail 所需的必要jar包
分享到:
相关推荐
JavaMail 是一个强大的开源库,用于在Java应用程序中发送和...通过阅读和理解代码,你可以学习如何在Java应用程序中利用JavaMail API发送邮件。记得在本地环境中配置正确的SMTP服务器信息,以确保邮件能够成功发送。
在本篇文章中,我们将深入探讨如何利用JavaMail API发送邮件,以及在实际应用中可能遇到的关键知识点。 首先,JavaMail的核心组件包括`javax.mail`和`javax.mail.internet`这两个包。`javax.mail`包含了处理邮件...
8. **使用JavaMail发送HTML邮件**:通过设置`MimeMessage`的`setContent()`方法,可以发送包含HTML的邮件。 ```java message.setContent("<h1>HTML邮件标题</h1><p>这是HTML邮件正文。</p>", "text/html;charset=...
这个示例将详细介绍如何在Java应用程序中使用JavaMail发送邮件。 首先,我们需要引入JavaMail相关的依赖。如果你使用的是Maven项目,可以在pom.xml文件中添加以下依赖: ```xml <groupId>com.sun.mail</groupId> ...
该程序通过JavaMail是实现邮件的发送,代码经过测试并成功,如果不能成功,请你在outlook下测试,看看你的设置是否正确。其它类包都包含在工程里面,并设置好路径了,你下载后,只要加载到Eclipse下面并修改JRE路径...
本教程将深入探讨如何在JSP(JavaServer Pages)中利用JavaMail API来实现邮件发送功能,同时提供了一个完整的Java Web项目文件供参考。 首先,要使用JavaMail,你需要在项目中引入必要的依赖。在Maven项目中,可以...
### JavaMail发送邮件时遇到的问题及解决方法 在使用JavaMail进行邮件发送的过程中,可能会遇到以下几种常见问题:发送成功但收件方未收到邮件、邮件收到后无主题或无收件人信息以及邮件内容出现乱码等情况。本文将...
这个例子展示了如何使用JavaMail发送带附件的邮件。需要注意的是,实际应用中应处理各种异常,确保邮件发送的健壮性。此外,如果你的邮件服务器需要身份验证,还需要提供一个Authenticator来处理登录信息。 总的来...
下面将详细介绍如何利用JavaMail发送文本、HTML和包含附件的邮件,以及在实际应用中需要注意的配置步骤。 1. **JavaMail的基本概念** - JavaMail API提供了一系列接口和类,允许开发者通过SMTP(Simple Mail ...
总的来说,"Android使用javamail发送邮件"这个主题涵盖了Android平台上利用JavaMail API实现邮件发送的基本流程和注意事项,包括设置SMTP服务器、构建邮件消息、处理附件以及可能的安全性和用户体验优化。...
标签“java发送邮件”意味着此示例主要关注Java语言中发送邮件的功能,而“javamail邮箱发送”则表明我们利用JavaMail库来实现这一功能。这个过程涉及到Java网络编程和邮件协议的理解,如SMTP(简单邮件传输协议)和...
JavaMail 是一个强大的开源库,用于在Java应用程序中处理电子邮件。它支持多种协议,包括POP3、IMAP和SMTP,这些协议分别用于接收、检索和发送邮件。...同时,保持JavaMail库更新,以利用最新的安全修复和功能改进。
总的来说,这个JavaMail邮箱系统是一个集成了邮件处理、用户设置和智能过滤的综合平台,通过利用JavaMail库和朴素贝叶斯算法,提供了一种高效且用户友好的邮件管理方案。开发者在设计时考虑到了用户体验和安全,使其...
需要网讯的webex打开,讲解利用JavaMail发送邮件的开发过程。
以上就是利用JavaMail API 实现邮件发送类的基本步骤和关键知识点。这个类提供了发送简单邮件和带附件的邮件,以及设置抄送和密送的功能,满足日常开发需求。在实际项目中,可以根据具体需求对这个类进行扩展和定制...
下面是一个简化的JavaMail发送邮件的过程: 1. **配置邮件会话**:首先,我们需要创建一个`Properties`对象,并设置SMTP服务器的相关参数,如主机名和端口号。然后,通过`Session.getInstance()`方法初始化一个邮件...
在IT行业中,发送电子邮件是一项常见的任务,特别是在自动化...通过理解并掌握上述知识点,你将能够熟练地利用JavaMail API创建自己的邮件服务。对于那些需要发送通知、报告或自动通信的项目,这是一项非常实用的技术。
通过上述步骤,开发者可以利用JavaMail API在Java应用程序中轻松地发送邮件。记住,为了确保邮件的稳定发送,需要根据实际的邮件服务器配置调整代码,比如是否使用TLS/SSL,以及相应的端口号和认证方式。
2. **邮件协议**:Javamail支持多种邮件协议,如SMTP(Simple Mail Transfer Protocol)用于发送邮件,POP3(Post Office Protocol version 3)和IMAP(Internet Message Access Protocol)用于接收邮件。在实现邮件...