javaMail邮件发送
利用Sun公司提供的JavaMail API可以很方便的开发邮件发送程序。也许你已经可以利用它来发送一段简单的文本了,但想不想使你的程序像OUTLOOK一样也能发送附件呢?本文在简单介绍了JavaMail之后,详细讲解了一段完整的送信的JavaBean及一个十分轻巧的servlet。
(没有装载JavaMail API的读者,可以到此站点下载,并按照Readme.txt设置好ClassPath)
一、JavaMail中一些我们需要的类
1.Properties
JavaMail需要Properties来创建一个session对象,其属性值就是发送邮件的主机,如:
Properties props = new Properties (); props.put("mail.smtp.host", "smtp.xxxx.com");//可以换上你的smtp主机名,就像你在OutLook中设置smtp主机名一样。 |
2.Session
所有的基于JavaMail的程序都至少需要一个或全部的对话目标。
Session session = Session.getInstance(props, null); |
3.MimeMessage
信息对象将把你所发送的邮件真实的反映出来。
MimeMessage msg = new MimeMessage(session); |
4.Transport
邮件的发送是由Transport来完成的:
二、我们自己创建的可发送附件的类
import java.util.* ; import java.io.* ; import javax.mail.* ; import javax.mail.internet.* ; import javax.activation.* ; public class Mail { //定义发件人、收件人、主题等 String to=""; String from=""; String host=""; String filename=""; String subject=""; //用于保存发送附件的文件名的集合 Vector file = new Vector(); //做一个可以传发件人等参数的构造 public Mail (String to,String from,String smtpServer,String subject){ //初始化发件人、收件人、主题等 this.to=to; this.from=from; this.host=smtpServer; this.subject=subject; } //该方法用于收集附件名 public void attachfile(String fname){ file.addElement(fname); } //开始发送信件的方法 public boolean startSend(){ //创建Properties对象 Properties props = System.getProperties(); //创建信件服务器 props.put("mail.smtp.host", host); //得到默认的对话对象 Session session=Session.getDefaultInstance(props, null); try { //创建一个消息,并初始化该消息的各项元素 MimeMessage msg = new MimeMessage(session); msg.setFrom(new InternetAddress(from)); InternetAddress[] address={new InternetAddress(to)}; msg.setRecipients(Message.RecipientType.TO,address); msg.setSubject(subject); //后面的BodyPart将加入到此处创建的Multipart中 Multipart mp = new MimeMultipart(); //利用枚举器方便的遍历集合 Enumeration efile=file.elements(); //检查序列中是否还有更多的对象 while(efile.hasMoreElements()){ MimeBodyPart mbp=new MimeBodyPart(); //选择出每一个附件名 filename=efile .nextElement().toString(); //得到数据源 FileDataSource fds=new FileDataSource(filename); //得到附件本身并至入BodyPart mbp.setDataHandler(new DataHandler(fds)); //得到文件名同样至入BodyPart mbp.setFileName(fds.getName()); mp.addBodyPart(mbp); } //移走集合中的所有元素 file.removeAllElements(); //Multipart加入到信件 msg.setContent(mp); //设置信件头的发送日期 msg.setSentDate(new Date()); //发送信件 Transport.send(msg); } catch (MessagingException mex) { mex.printStackTrace(); Exception ex = null; if ((ex=mex.getNextException())!=null){ ex.printStackTrace(); } return false; } return true; } } |
下面是一个源码
package com;
import java.io.*;
import java.util.*;
import javax.mail.*;
import javax.mail.internet.*;
import javax.activation.*;
import javax.mail.Message;
import org.springframework.stereotype.Component;
import com.util.SysGlobal;
@Component("sendmail")
public class SendMail {
private static File file;
public static void main(String[] args) throws IOException{
SendMail sendmail=new SendMail();
String sendEmail = "chenlichenli520@126.com";
String sendPwd = "******";
String host = "smtp.126.com";
FileReader reader=new FileReader("chen.txt");//此处是一个文件名,发送邮件的信息全部放在此txt文件中
BufferedReader buf=new BufferedReader(reader);
String context="";
String row="";
while((row=buf.readLine())!=null)
{
context=context+row+"\n<br/>";
}
context =SendMail.removeFFFE(context);
context=context.replaceAll("\\&\\{email\\}","jimmychenli@126.com");
context=context.replaceAll("\\&\\{info\\}","ss");
System.out.println(context);
String info=context;
if(sendmail.send(sendEmail, "393758826@qq.com",sendPwd,host,info)){
System.out.println("邮件发送成功");
}
}
private static String removeFFFE(String s) {
for(int i=0; i<2; i++) {
if(s.length()>1) {
char c = s.charAt(0);
if(c==0xfffe || c==0xfeff)
s = s.substring(1);
}
}
return s;
}
public static boolean send(String from,String to,String password,String host,String info){
Properties props=new Properties();
// 与服务器建立Session的参数设置
props.put("mail.smtp.host", host);// host服务器。
props.put("mail.smtp.auth", "true");//服务自动验证
Session mailSession=Session.getDefaultInstance(props,null);//与服务器建立连接
try{
//Transport用来发送邮件传输协议
Transport trans=mailSession.getTransport("smtp");
trans.connect(host,from,password);
//创建邮件发送信息
Message newMessage=new MimeMessage(mailSession);
newMessage.setSubject("温馨提示");//设计发送邮件的主题
newMessage.setFrom(new InternetAddress(from));//设定所发人的邮箱;
BodyPart fileBodyPart=new MimeBodyPart();
/* FileDataSource fds=new FileDataSource(file);
fileBodyPart.setDataHandler(new DataHandler(fds));*/
fileBodyPart.setHeader("text/html", "utf-8");
Address addressTo[] = { new InternetAddress(to)};
newMessage.setRecipients(Message.RecipientType.TO, addressTo);
fileBodyPart.setContent(info,"text/html;charset=utf-8");//设定可以发送HTML格式的邮件,最终将显示HTML
MimeMultipart multi = new MimeMultipart();
multi.addBodyPart(fileBodyPart);
newMessage.setContent(multi);
newMessage.saveChanges();
trans.sendMessage(newMessage, newMessage.getRecipients(Message.RecipientType.TO));
trans.close();
return true;
}catch(Exception ex){
ex.printStackTrace();
return false;
}
}
}
分享到:
相关推荐
"常规JavaMail 邮件发送实用类"标题所指的,通常是一个自定义的Java类,封装了JavaMail API的基本操作,使得邮件发送变得更加简单和便捷。这类实用类一般包含配置SMTP服务器、设置邮件内容、添加附件等功能。 ...
JavaMail邮件发送工具类是Java开发中用于发送电子邮件的标准库,它提供了丰富的API来处理复杂的邮件功能。在JavaMail中,我们可以通过创建特定的类和对象来实现邮件的发送。以下将详细介绍这些类以及如何使用它们。 ...
JavaMail邮件发送Demo是Java开发中用于实现电子邮件发送的一个实例,它依赖于两个关键的库:activation.jar和mail.jar。这两个库提供了JavaMail API,使得Java开发者能够方便地与各种邮件服务器进行交互,完成邮件的...
JavaMail邮件发送实例是Java开发中常见的一个应用场景,主要用于实现程序自动发送电子邮件的功能。这个实例可以帮助开发者理解如何使用JavaMail API来构建邮件服务。在JavaMail API中,我们可以使用MimeMessage类...
JavaMail邮件发送源码是Java开发中用于发送电子邮件的一个库,它提供了丰富的API来处理SMTP、POP3和IMAP等邮件协议。这个简单的javamail实例表明,开发者已经成功地测试了邮件发送功能,确保其在实际应用中可以正常...
【javamail邮件发送项目】是一个基于Java技术的邮件发送解决方案,主要利用Spring框架进行配置,结合FreeMarker(FTL)模板技术实现邮件内容的动态生成,并具备异步发送及批量处理邮件的能力,最多可同时处理1000份...
这个“javamail邮件发送接收测试”是开发者在学习过程中创建的一个测试项目,旨在帮助理解和实践 JavaMail 的核心功能。通过这个项目,我们可以深入理解如何使用 JavaMail API 来实现邮件的发送和接收。 JavaMail ...
在本篇文章中,我们将深入探讨如何利用Spring来实现JavaMail邮件发送,以及在实际应用中需要注意的关键点。 首先,我们需要理解JavaMail API的基础概念。JavaMail是一个用于处理邮件的开放源码API,它允许开发者...
JavaMail邮件发送程序是Java平台上的一个开源库,用于处理电子邮件的发送和接收。这个程序允许开发者通过SMTP(简单邮件传输协议)、POP3(邮局协议)或IMAP(因特网消息访问协议)等标准协议来收发邮件。在Java EE...
JavaMail邮件发送是Java开发中一个常见的任务,用于程序自动化发送电子邮件。这个技术基于JavaMail API,它提供了一组丰富的接口和类,使得开发者能够轻松地处理邮件的发送、接收和管理。在JavaMail中,主要涉及的...
JavaMail邮件发送(带附件)
JavaMail邮件发送是一种在Java应用程序中发送电子邮件的技术。它是一个开源的Java库,允许开发者通过SMTP(简单邮件传输协议)或其他邮件传输协议向互联网上的邮件服务器发送邮件。这个程序是用Java编写的,并且在...
JavaMail邮件发送是一个常见的开发需求,它允许程序员通过编程方式发送包含文本、附件甚至多媒体内容的电子邮件。在Java中,JavaMail API提供了这样的功能,它是一个开源库,用于处理SMTP(简单邮件传输协议)、POP3...
这个“Javamail邮件发送”项目很可能是为了演示如何使用 Javamail API 来实现邮件发送功能,包括单独发送和群发邮件。 首先,我们需要引入 Javamail 的相关依赖。在 Maven 项目中,可以在 `pom.xml` 文件中添加以下...
2. **获取Session对象**:使用`Properties`对象创建一个`Session`实例,它是邮件会话的容器,可以存储邮件发送的配置信息。 3. **创建Message对象**:通过`Session`对象创建一个`Message`实例,这代表了你要发送的...
下面将详细介绍JavaMail邮件发送的相关知识点。 首先,JavaMail的核心组件是`javax.mail`和`javax.mail.internet`这两个包。它们提供了发送邮件所需的类和接口。例如,`Session`代表邮件会话,`Message`用于构建...
JavaMail邮件发送程序所需JAR包,包含:commons-email-1.2.jar, activation.jar, mail.jar, commons-email-1.2-sources.jar, commons-email-1.2-javadoc.jar。
在`test.java`文件中,你可以看到这些步骤的实现,通过运行该文件进行邮件发送的测试。请注意,为了安全起见,实际应用中不应硬编码敏感信息如用户名和密码,而应使用环境变量或配置文件。 总的来说,JavaMail提供...