Javamail邮件发送的总结:
首先需要导入的jar包:两个分别是mail.jar和activation.jar。
邮件大致可以分三种:纯文本邮件、含有其他数据的文本邮件、含有附件的邮件。
下面我做了两个实验,源代码如下:
案例一:
发送html形式的邮件:RemindMail.java
package mocha.jlcm.mail.impl;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Properties;
import javax.mail.Address;
import javax.mail.Authenticator;
import javax.mail.BodyPart;
import javax.mail.Message;
import javax.mail.PasswordAuthentication;
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;
import mocha.jlcm.fore.dao.OvertimeTaskDao;
/**
* @author panyt 2011-11-01
*
* 发送html形式的邮件,
*/
public class RemindMail
{
//邮箱服务器
private String host;
//发件人邮箱用户名
private String username;
//邮箱密码
private String password ;
//邮件标题名
private String mail_head_name;
//邮件标题名内容
private String mail_head_value ;
//收件人邮箱
private String mail_to;
//发件人邮箱
private String mail_from;
//信件标题
private String mail_subject;
//信件内容
private String mailBody;
//发件人的名称
private String personalName;
Properties properties = new Properties();
OvertimeTaskDao dao;
public void setDao(OvertimeTaskDao dao) {
this.dao = dao;
}
public RemindMail()
{
try {
properties.load(getClass().getResourceAsStream("/jlmail.properties"));
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* 读取配置文件jlemail.properties对应的值
*/
public void getPropertiesValue(){
host = properties.getProperty("host");
username = properties.getProperty("username");
password = properties.getProperty("password");
mail_head_name = properties.getProperty("mail_head_name");
mail_head_value = properties.getProperty("mail_head_value");
mail_to = properties.getProperty("mail_to");
mail_from = properties.getProperty("mail_from");
mail_subject = properties.getProperty("mail_subject");
//mail_body = properties.getProperty("mail_body");
personalName = properties.getProperty("personalName");
}
/**
* 此段代码用来发送普通电子邮件
*
* @deptId 责任部门id
*/
public void send(String deptId) throws Exception
{
try
{
Properties props = new Properties(); // 获取系统环境
Authenticator auth = new Email_Autherticator(); // 进行邮件服务器用户认证
this.getPropertiesValue();
// String manger = dao.getDeptName(deptId);
props.put("mail.smtp.host", host);
props.put("mail.smtp.auth", "true");
Session session = Session.getDefaultInstance(props, auth);
mailBody = this.getMailBody();
// 新建一个MimeMultipart对象用来存放BodyPart对象(事实上可以存放多个)
MimeMultipart mm = new MimeMultipart();
// 新建一个存放信件内容的BodyPart对象
BodyPart mdp = new MimeBodyPart();
// 给BodyPart对象设置内容和格式/编码方式
mdp.setContent(mailBody, "text/html;charset=utf-8");
mm.setSubType("related");
mm.addBodyPart(mdp);
// 设置session,和邮件服务器进行通讯。
MimeMessage message = new MimeMessage(session);
message.setContent(mm); // 设置邮件格式
message.setSubject(mail_subject); // 设置邮件主题
//message.setText(mail_body); // 设置邮件正文
message.saveChanges();
message.setHeader(mail_head_name, mail_head_value); // 设置邮件标题
message.setSentDate(new Date()); // 设置邮件发送日期
Address address = new InternetAddress(mail_from, personalName);
message.setFrom(address); // 设置邮件发送者的地址
// 设置邮件接收方的地址
// Address toAddress = new InternetAddress(manger+mail_to);
Address toAddress = new InternetAddress(mail_to);
message.addRecipient(Message.RecipientType.TO, toAddress);
Transport.send(message); // 发送邮件
System.out.println("send ok!!!!!"+mail_to);
} catch (Exception ex)
{
ex.printStackTrace();
throw new Exception(ex.getMessage());
}
}
/**
* 邮件内容
* @return
*/
public String getMailBody(){
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
StringBuffer mail_body=new StringBuffer();
mail_body.append("<html><head><title></title></head><body>");
mail_body.append("<div>");
mail_body.append("<div>");
mail_body.append("XXX,您好!<br>");
mail_body.append("  根据XX系统统计,
请及时处理任务工作。具体待办任务<br>");
mail_body.append(" 如下:<br>");
mail_body.append("<table border='1' cellpadding='1' bordercolor='#000000' cellspacing='0' width='800'>");
mail_body.append("<tr align='center'>");
mail_body.append("<td>流程类型</td><td>所属流程</td><td>超时任务</td><td>状态</td><td>责任部门</td><td>预计处理时限(天)</td><td>实际已用时间(天)</td>");
mail_body.append("</tr>");
mail_body.append("<tr align='center'>");
mail_body.append("<td>"+1+"</td>");
mail_body.append("<td>"+2+"</td>");
mail_body.append("<td>"+3+"</td>");
mail_body.append("<td>"+4+"</td>");
mail_body.append("<td>"+5+"</td>");
mail_body.append("<td>"+6+"</td>");
mail_body.append("<td>"+7+"</td>");
mail_body.append("</tr>");
mail_body.append("<table>");
mail_body.append("<br><br><br>");
mail_body.append("</div>");
mail_body.append("<div>");
mail_body.append(" 祝工作顺利!<br><br>");
mail_body.append("PS:此邮件通过系统自动发送,请勿回复!<br>");
mail_body.append("</div>");
mail_body.append("<br><br>");
mail_body.append("<div align=\"right\" style='width:800'>XXX(发送催办邮件人员姓名)</div><br>");
mail_body.append("<div align=\"right\" style='width:800'>"+sdf.format(new Date())+"</div>");
mail_body.append("</div>");
mail_body.append("</body></html>");
return mail_body.toString();
}
/**
* 用来进行服务器对用户的认证
*/
public class Email_Autherticator extends Authenticator
{
public Email_Autherticator()
{
super();
}
public Email_Autherticator(String user, String pwd)
{
super();
username = user;
password = pwd;
}
public PasswordAuthentication getPasswordAuthentication()
{
return new PasswordAuthentication(username, password);
}
}
public static void main(String[] args)
{
RemindMail sendmail = new RemindMail();
try
{
sendmail.send("");
} catch (Exception ex)
{
}
}
}
配置的属性文件:jlmail.properties
#邮箱服务器
host = smtp.163.com
#发件人邮箱用户名
username = ***@163.com
# 邮箱密码
password = ********
#邮件标题名
mail_head_name = head mail
#邮件标题名内容
mail_head_value = head mail
#收件人邮箱
mail_to = *****@126.com
#发件人邮箱
mail_from = jadethao@163.com
#信件标题
mail_subject = 提醒邮件
#信件内容
mailBody = 注意未办信息
#发件人的名称
personalName = XX领导
这项目已经验证了,可以进行信息的发送。
案例二:
带附件的邮件发送:
package com.mocha;
import java.util.Date;
import java.util.Properties;
import javax.activation.DataHandler;
import javax.activation.FileDataSource;
import javax.mail.Address;
import javax.mail.Authenticator;
import javax.mail.Message;
import javax.mail.Multipart;
import javax.mail.Part;
import javax.mail.PasswordAuthentication;
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;
/**
* 准备好两个邮箱帐号
* 这两个邮箱已经存在 可直接登录
*/
/** *//**
* 发送普通邮件(带有附件),接受普通邮件 发送带有附件的邮件,接收带有附件的邮件 发送html形式的邮件,接受html形式的邮件 发送带有图片的邮件等做了一个总结。
*/
public class MailMultiTest
{
// 邮箱服务器
private String host = "smtp.163.com";
// 这个是你的邮箱用户名
private String username = "*****";
// 你的邮箱密码
private String password = "*****";
private String mail_head_name = "this is head of this mail";
private String mail_head_value = "this is head of this mail";
private String mail_to = "***@163.com";
private String mail_from = "*****@163.com";
private String mail_subject = "this is the subject of this test mail";
private String mail_body = "this is the mail_body of this test mail";
private String personalName = "发件人姓名";
public MailMultiTest()
{
}
/** *//**
* 此段代码用来发送普通电子邮件
*/
public void send() throws Exception
{
try
{
Properties props = new Properties(); // 获取系统环境
Authenticator auth = new Email_Autherticator(); // 进行邮件服务器用户认证
props.put("mail.smtp.host", host);
props.put("mail.smtp.auth", "true");
Session session = Session.getDefaultInstance(props, auth);
// 设置session,和邮件服务器进行通讯。
MimeMessage message = new MimeMessage(session);
// message.setContent("foobar, "application/x-foobar"); // 设置邮件格式
message.setSubject(mail_subject); // 设置邮件主题
// message.setText(mail_body); // 设置邮件正文
message.setHeader(mail_head_name, mail_head_value); // 设置邮件标题
message.setSentDate(new Date()); // 设置邮件发送日期
Address address = new InternetAddress(mail_from, personalName);
message.setFrom(address); // 设置邮件发送者的地址
Address toAddress = new InternetAddress(mail_to); // 设置邮件接收方的地址
message.addRecipient(Message.RecipientType.TO, toAddress);
String attch1 = "G:/1.txt";
String attch2 = "G:/2.txt";
Multipart multipart = new MimeMultipart();
//加入文本内容
MimeBodyPart mimeBodyPart1 = new MimeBodyPart();
mimeBodyPart1.setText("how are you !") ;
multipart.addBodyPart(mimeBodyPart1) ;
//加入第一个附件
MimeBodyPart mimeBodyPart2 = new MimeBodyPart();
FileDataSource fds = new FileDataSource(attch1);
mimeBodyPart2.setDataHandler(new DataHandler(fds)) ;
mimeBodyPart2.setDisposition(Part.ATTACHMENT) ;
mimeBodyPart2.setFileName(fds.getName()) ;
multipart.addBodyPart(mimeBodyPart2) ;
//加入第二个附件
MimeBodyPart mimeBodyPart3 = new MimeBodyPart();
fds = new FileDataSource(attch2);
mimeBodyPart3.setDataHandler(new DataHandler(fds)) ;
mimeBodyPart3.setDisposition(Part.INLINE) ;
mimeBodyPart3.setFileName(fds.getName()) ;
multipart.addBodyPart(mimeBodyPart3) ;
message.setContent(multipart) ;
Transport.send(message); // 发送邮件
System.out.println("send ok!");
} catch (Exception ex)
{
ex.printStackTrace();
throw new Exception(ex.getMessage());
}
}
/** *//**
* 用来进行服务器对用户的认证
*/
public class Email_Autherticator extends Authenticator
{
public Email_Autherticator()
{
super();
}
public Email_Autherticator(String user, String pwd)
{
super();
username = user;
password = pwd;
}
public PasswordAuthentication getPasswordAuthentication()
{
return new PasswordAuthentication(username, password);
}
}
public static void main(String[] args)
{
MailMultiTest sendmail = new MailMultiTest();
try
{
sendmail.send();
} catch (Exception ex)
{
}
}
}
这项目已经验证了,可以进行信息的发送。
分享到:
相关推荐
JavaMail操作的总结
总结来说,封装javamail是为了简化邮件处理,通过创建自定义的邮件服务类,使得开发者能更便捷地发送和接收邮件。项目提供的`doc`文档、`lib`库文件和`demo`示例是学习和使用这个封装的关键资源。理解并实践这些内容...
### JavaEE5学习笔记04-JavaMail使用总结 在JavaEE5的学习过程中,JavaMail是一个非常重要的组件,它提供了发送、接收电子邮件的功能,并且能够与各种不同的邮件服务器进行交互。下面将根据提供的内容,详细解析...
总结,"ant-javamail-1.6.4.jar.zip"是Apache Ant与JavaMail的一个整合包,提供了Ant对JavaMail的支持,使得开发者能够在构建流程中方便地处理邮件通信。正确理解和使用这个组件,能够提升项目管理和团队协作的水平...
### JavaMail邮件开发系统教程知识点总结 #### 一、引言 JavaMail API是由Sun Microsystems为Java开发者提供的一套强大的邮件处理工具集。它支持多种邮件通信协议(如SMTP、IMAP、POP3等),并为Java应用程序提供了...
总结,SSM框架集成JavaMail涉及的关键点有:添加JavaMail依赖、配置邮件服务器参数、创建邮件服务接口及其实现、初始化邮件会话、构建并发送邮件。通过这个过程,我们可以灵活地在SSM项目中实现邮件发送功能,增强...
总结来说,JavaMail API提供了一套完整的邮件操作接口,通过`Message`类构建邮件,`Transport`类发送邮件,以及`Store`类接收和管理邮件。`mail.jar`是实现这些功能的关键组件,包含所有必需的类和接口。在开发过程...
总结来说,JavaMail 1.4.7 是一个强大的工具,让Java程序员能够轻松地与各种邮件服务器交互,实现邮件的发送、接收和管理。通过理解和运用这个库,开发者可以构建出功能完善的邮件应用程序,满足各种业务需求。在...
总结来说,JavaMail 为开发者提供了一个强大且灵活的工具,用于在 Java 应用中处理邮件的发送和接收。通过理解 POP3 和 IMAP 协议,以及如何使用 JavaMail API,开发者可以轻松地构建出高效、安全的邮件应用。无论是...
总结,JavaMail 内存溢出问题主要源于邮件处理不当和资源管理不足。通过理解 JavaMail 源码,尤其是 `POP3Folder.java` 类的实现,我们可以找到优化点并采取相应的解决策略,如分批处理、及时关闭资源和调整缓存策略...
对于本文提到的“JavaMail使用总结---3”,可能涵盖了更高级或特定的JavaMail用法,例如使用SSL/TLS加密通信、处理邮件附件、读取邮件、解析邮件头等。由于没有具体的博客内容,这部分无法提供详细讲解,但这些都是...
### JavaMail收发Gmail邮件知识点详解 ...#### 六、总结 通过以上步骤,我们可以使用JavaMail实现对Gmail邮件的收发功能,并且通过SSL加密技术确保了数据的安全传输。这对于开发涉及邮件处理的应用程序非常有用。
总结来说,JavaMail邮件管理系统是通过JavaMail API利用SMTP和IMAP协议实现邮件的收发功能,它为开发者提供了一个强大且灵活的工具集,以构建高效、可靠的邮件应用。开发者可以根据需求扩展功能,如邮件过滤、自动...
#### 四、总结 JavaMail API为开发者提供了一套全面的工具集,使得在Java应用程序中集成电子邮件功能变得简单。通过理解上述核心概念及其用法,开发者可以轻松地开发出功能完善的电子邮件应用程序。
书名:JavaMail API基础教程(电子书) ...作者:IBM 目录 1.教程提示 2.引入JavaMail API 3.对相关协议的回顾 4.安装JavaMail 5.对核心类的概览 6.JavaMail API的使用 7.用SearchTerm(搜索条件)搜索 ...9.总结
#### 四、总结 JavaMail API为Java开发者提供了一个强大的工具集,可以轻松实现邮件的发送、接收和其他管理功能。通过结合不同的邮件协议,如SMTP、POP3、IMAP和MIME,JavaMail API能够满足各种邮件应用的需求。对于...
总结来说,JavaMail工具类是Java开发中用于邮件服务的一个实用工具,通过封装JavaMail API,使得邮件发送过程更加简洁。开发者可以利用它轻松实现文本邮件、带附件的邮件以及多附件邮件的发送,同时,配合`mail....
总结起来,使用JavaMail在Linux服务器上发送报警邮件,需要理解JavaMail API的使用,配置SMTP服务器信息,以及在Java代码中正确设置邮件的各个属性。这样,当服务器出现问题时,运维人员可以第一时间收到通知,从而...
四、总结 JavaMail为Java开发者提供了强大且灵活的邮件处理能力,无论是简单的文本邮件还是包含附件的复杂邮件,都可以轻松处理。通过配置SMTP服务器参数,可以连接不同的邮件服务商,实现邮件的发送和接收。熟练...
#### 四、总结 JavaMail API 提供了一个强大且灵活的框架,使得开发者能够在 Java 应用程序中轻松地实现邮件发送和接收功能。通过了解基本的概念、相关协议以及简单的使用案例,你可以快速上手并利用 JavaMail API ...