最近需要用到使用javamail发邮件,网上搜了下相关资料学习了下,怕以后忘记,记录在此。
1.
什么是javamail JavaMail API是读取、撰写、发送电子信息的可选包。
2.
javamail开发需要依赖的jar包
mail.jar(javamail API 目前是1.4.3)-与收发有关的类都在其中
activation.jar(javabeans activation framework包 目前是1.0.2)--可以提供对Mime类型数据的支持。比如收发附件。
<!-- 官方解释开始 -->
With the JavaBeans Activation Framework standard extension, developers who use Java technology can take advantage of standard services to determine the type of an arbitrary piece of data, encapsulate access to it, discover the operations available on it, and to instantiate the appropriate bean to perform said operation(s). For example, if a browser obtained a JPEG image, this framework would enable the browser to identify that stream of data as an JPEG image, and from that type, the browser could locate and instantiate an object that could manipulate, or view that image.
<!--官方解释结束 -->
3.
HelloJavaMail 使用javamail通过163邮件服务器递送一封纯文本邮件
public static void sendTxtMail()
{
Properties props = new Properties();
props.put("mail.smtp.host", "smtp.163.com"); //smtp服务器地址
props.put("mail.smtp.auth", true); //是否需要认证
/**实例化一个验证里,继承abstract Authenticator
* 实现
* protected PasswordAuthentication getPasswordAuthentication(){
* return new PasswordAuthentication(userName,password);
* }
*/
MyAuthenticator myauth = new MyAuthenticator("账号","密码");
//获得一个带有authenticator的session实例
Session session = Session.getInstance(props,myauth);
session.setDebug(true);//打开debug模式,会打印发送细节到console
Message message = new MimeMessage(session); //实例化一个MimeMessage集成自abstract Message 。参数为session
try
{
message.setFrom(new InternetAddress("83378122@163.com")); //设置发出方,使用setXXX设置单用户,使用addXXX添加InternetAddress[]
message.setText("只是一个简简单单的文本内容哟!"); //设置文本内容 单一文本使用setText,Multipart复杂对象使用setContent
message.setSubject("只是简简单单的文本标题哟!"); //设置标题
message.setRecipient(Message.RecipientType.TO, new InternetAddress("dxt02880466@qq.com")); //设置接收方
Transport.send(message); //使用Transport静态方法发送邮件
}catch(AddressException e)
{
//此处处理AddressException异常 [The exception thrown when a wrongly formatted address is encountered.]
}catch(MessagingException e)
{
//此处处理MessagingException异常 [The base class for all exceptions thrown by the Messaging classes ]
}
}
写法二:
public static void sendTxtMail()
{
Properties props = new Properties();
Session session = Session.getInstance(props,null);
session.setDebug(true);//打开debug模式,会打印发送细节到console
Message message = new MimeMessage(session); //实例化一个MimeMessage集成自abstract Message 。参数为session
try
{
message.setFrom(new InternetAddress("83378122@163.com")); //设置发出方,使用setXXX设置单用户,使用addXXX添加InternetAddress[]
message.setText("只是一个简简单单的文本内容哟!"); //设置文本内容 单一文本使用setText,Multipart复杂对象使用setContent
message.setSubject("只是简简单单的文本标题哟!"); //设置标题
message.setRecipient(Message.RecipientType.TO, new InternetAddress("dxt02880466@qq.com")); //设置接收方
/**
*使用静态方法每次发送需要建立一个到smtp服务器的链接,你可以手动控制连接状态 ,通过session获得tansport,连接到mailserver,而session就可以使用Session.getDefaultInstance(props,null);获得 */
Transport transport = session.getTransport("smtp");
transport.connect(("smtp.163.com","账号", "密码");
transport.sendMessage(message, message.getAllRecipients());
transport.close();
}catch(AddressException e)
{
//此处处理AddressException异常 [The exception thrown when a wrongly formatted address is encountered.]
}catch(MessagingException e)
{
//此处处理MessagingException异常 [The base class for all exceptions thrown by the Messaging classes ]
}
}
4.发送HTML内容的邮件
把HTML内容的邮件通过前面的代码发出去会使代码原样显示在邮件里,故需要对代码进行简单修改。其中HTML中的img需来自网上。
修改设置content的代码
message.setContent("<b><font color=\"red\">带颜色的HTML内容</font></b>","text/html;charset=utf8");
// charset用于设置内容的编码格式
5.HelloJavaMail发送带有附件的邮件
//发送带有附件的邮件,将邮件的每个部分初始化一个bodypart。
//邮件是由多个部分组成,每个部分称为一个邮件体部分,是一个 BodyPart 类对象,
//对于 MIME 类型 邮件来讲就是 MimeBodyPart 类对象.这些邮件体包含在成为 Multipart 的容器中
public static void sendMailWithAttachment(){
Properties props = new Properties();
Session session = Session .getDefaultInstance(props);
Message message = new MimeMessage(session);
try
{
message.setSubject("这个是带有附件的标题");
message.setFrom(new InternetAddress("83378122@163.com"));
message.setRecipient(Message.RecipientType.TO, new InternetAddress("dxt02880466@qq.com"));
Multipart multipart = new MimeMultipart();
//实例化一个bodypart用于封装内容
BodyPart bodyPart = new MimeBodyPart();
bodyPart.setContent("<font color='red'>这个是带有附件的HTML内容</font>","text/html;charset=utf8");
//添加bodypart到multipart
multipart.addBodyPart(bodyPart);
//每一个部分实例化一个bodypart,故每个附件也需要实例化一个bodypart
bodyPart = new MimeBodyPart();
//实例化DataSource(来自jaf),参数为文件的地址
DataSource dataSource = new FileDataSource(file.getAbsolutePath());
//使用datasource实例化datahandler
DataHandler dataHandler = new DataHandler(dataSource);
bodyPart.setDataHandler(dataHandler);
//设置附件标题,使用MimeUtility进行名字转码,否则接收到的是乱码
bodyPart.setFileName(javax.mail.internet.MimeUtility.encodeText(file.getName()));
multipart.addBodyPart(bodyPart);
message.setContent(multipart);
Transport transport = session.getTransport("smtp");
transport.connect("smtp.163.com","账号" , "密码");
transport.sendMessage(message, message.getAllRecipients());
transport.close();
}catch(MessagingException e)
{}catch(UnsupportedEncodingException e){}
}
结尾:
初学javamail,怕遗忘就记录在这里。有时间会详细学习下一些细节。
分享到:
相关推荐
使用JMail发送邮件主要包括以下几个步骤: 1. **配置SMTP服务器**:JMail需要知道SMTP服务器的信息,包括服务器地址、端口号、用户名和密码。这些信息可以在程序中以Properties对象的形式设置。 2. **创建Session...
本教程将深入讲解如何使用Java JMail发送邮件,以及涉及的相关知识点。 1. **Java JMail基本概念** - **JavaMail API**: JavaMail API是Java平台上的一个标准API,用于处理电子邮件。它提供了与邮件服务器交互的...
JMail是一个开源的Java邮件处理库,它实现了JavaMail API规范,允许开发者使用SMTP(简单邮件传输协议)和POP3(邮局协议)与邮件服务器进行交互。通过JMail,你可以创建、发送、读取和管理电子邮件,支持附件、...
例如,下面是一个简单的使用JMail发送邮件的代码示例: ```java import com.jmail.JMail; public class MailSender { public static void main(String[] args) { JMail mail = new JMail(); mail.setFrom("your...
JavaMail 是一个强大的 Java 库...通过学习和使用 JavaMail,开发者可以轻松地在自己的应用中实现邮件通信,提升用户体验。记得在实际应用中,确保遵循相关的安全最佳实践,如使用加密的连接和处理潜在的邮件安全问题。
3. 发送邮件:使用Session对象的Transport服务发送邮件。 ```java Transport transport = session.getTransport(); transport.connect(); transport.sendMessage(message, message.getAllRecipients()); transport....
以下是一个简单的示例,展示了如何使用JMail发送邮件: ```java Properties props = System.getProperties(); props.put("mail.smtp.host", "smtp.example.com"); props.put("mail.smtp.port", "587"); props.put(...
4. 发送邮件:通过Transport.send()方法将邮件发送出去。如果需要发送带有附件的邮件,可以先将附件添加到Multipart,然后再将Multipart设置为邮件的消息体。 5. 接收邮件:对于接收邮件,JavaMail API提供了Store...
`JMail` 是基于JavaMail API的,JavaMail是一个开放源代码的API,它提供了与多种邮件系统交互的能力,如SMTP(Simple Mail Transfer Protocol)用于发送邮件,POP3(Post Office Protocol version 3)和IMAP...
在发送邮件时,Jmail会建立一个到SMTP服务器的连接,然后根据SMTP协议的指令序列,发送邮件内容和收件人信息。 另一方面,当涉及到邮件接收时,Jmail利用POP协议从邮件服务器检索邮件。POP3(邮局协议第3版)是常用...
完成上述步骤后,我们可以使用`Transport.send()`方法发送邮件: ```java Transport.send(message); ``` 需要注意的是,为了确保邮件发送成功,需要检查SMTP服务器的设置是否正确,包括SSL/TLS的启用情况,以及...
在"发送邮件.doc"文档中,详细介绍了JMail发送邮件的基本步骤。JMail组件主要依赖于JavaMail API,它提供了一系列接口和类来处理SMTP(Simple Mail Transfer Protocol)协议。要发送邮件,你需要: 1. 添加JMail和...
首先,"SendMailWithAdd.rar"可能是一个包含示例代码的压缩文件,其中展示了如何使用JMail添加附件并发送邮件。通过阅读和运行这些代码,你可以了解到JMail的基本使用方法,如创建`SimpleMailMessage`对象,设置发件...
4. **发送邮件**:调用jmail的Send方法,传入收件人、主题、内容等信息,即可发送邮件。 5. **接收邮件**:通过POP3协议,可以使用jmail的Receive方法收取邮件。 **四、参考资料** 1. `javamail.CHM`:这可能是一...
调用`connect()`方法连接到SMTP服务器,并使用`sendMessage()`方法发送邮件。 - **接收邮件**:通过`javax.mail.Session`类创建会话对象,并使用`getStore()`方法获取存储对象。调用`open()`方法连接到POP3或IMAP...
JavaMail通过SMTP服务提供商的服务器发送邮件。开发者需要配置SMTP服务器地址、端口号、用户名和密码等信息。 3. **POP3协议**:POP3用于从邮件服务器下载邮件。JavaMail API提供API接口,使开发者能够检查邮件...
综上所述,这个"发送邮件的java工程"涵盖了JavaMail API的基本使用、JMail的集成、MyEclipse项目的导入和管理,以及邮件发送的常见配置和安全考虑。通过学习和分析这个工程,开发者可以快速掌握Java环境下发送邮件的...
1. **发送验证邮件**:当用户注册或更改其电子邮件地址时,系统会通过JMail发送一封包含唯一验证码的邮件。这一步骤涉及到设置SMTP服务器的配置,如服务器地址、端口、用户名和密码,以及邮件内容的构建,包括发件人...
JMail是JavaMail的一个第三方实现,它允许开发者在Visual C++等非Java环境中使用SMTP和POP3协议发送和接收电子邮件。在描述中提到的".zip"文件,可能包含了JMail程序的源代码、库文件和其他项目资源,供开发者学习或...
利用JavaMail进行邮件开发的发邮件的源代码,其中有四个例子,demo1/demo2是发送简单的邮件,demo3是发送一封html格式(正文为html格式,html代码中有一张图片)带附件的邮件。demo4是对demo3的补充,解决了附件的...