关于javamail,网上沸沸扬扬的说了一大堆,代码也是东一块西一块的。其实理论知识再说也不如真正给个简单的代码看看,这个代码绝对简单,绝对可以运行。
代码如下:至于lib包需要的可以从以下地址获得。
http://www2.cnalbum.cn/java/?C=D;O=D
ConstantsMail.java
package com.test.mail;
public class ConstantsMail {
//"mail.smtp.host" 通常无需更改
public static final String MAIL_SMTP_HOST = "mail.smtp.host";
//"mail.smtp.auth" 通常无需更改
public static final String MAIL_SMTP_AUTH = "mail.smtp.auth";
//需要身份验证 通常无需更改
public static final String TRUE = "true";
//连接协议 "pop3" 通常无需更改
public static final String POP3 = "pop3";
//收件箱 通常无需更改
public static final String INBOX = "INBOX";
//连接的smtp服务器的名称
public static final String CONN_SMTP_SERVER_NAME = "smtp.softbrain.com.cn";
//连接服务器用户名
public static final String CONN_SERVER_USER_NAME = "jiangbin@softbrain.com.cn";
//连接服务器密码
public static final String CONN_SERVER_PASSWORD = "softbrain";
//邮件标题
public static final String MAIL_TITLE = "title";
//邮件内容
public static final String MAIL_CONTENT = "content";
//邮件接收格式
public static final String MAIL_REC_PATTERN_1 = "text/html; charset=GB2312";
public static final String MAIL_REC_PATTERN_2 = "texl/plain";
public static final String MAIL_REC_PATTERN_3 = "multipart/alternative";
public static final String MAIL_REC_PATTERN_4 = "multipart/related";
//发件人地址和姓名
public static final String MAIL_SENDER_ADDRESS = "jiangbin@softbrain.com";
public static final String MAIL_SENDER_NAME = "aaaaa";
//收件人地址和姓名
public static final String MAIL_RECEIVER_ADDRESS = "jiangbin19830421@163.com";
public static final String MAIL_RECEIVER_NAME = "bbbbbb";
//抄送人地址和姓名
public static final String MAIL_COPYER_ADDRESS = "lanisha00006@163.com";
public static final String MAIL_COPYER_NAME = "lanisha00006";
}
MailUtil.java
package com.test.mail;
import java.util.Properties;
import javax.mail.Folder;
import javax.mail.MessagingException;
public class MailUtil {
//获得所有邮件
public static int getMessageCount(Folder folder) throws MessagingException{
int count = 0 ;
if(folder != null)
return folder.getMessageCount();
return count ;
}
//获得新邮件的个数
public static int getNewMessageCount(Folder folder) throws MessagingException{
int count = 0 ;
if(folder != null)
return folder.getNewMessageCount();
return count ;
}
//已经读取的邮件的个数
public static int getUnreadMessageCount(Folder folder) throws MessagingException{
int count = 0 ;
if(folder != null)
return folder.getUnreadMessageCount();
return count ;
}
//初始化属性文件
public static Properties initProps(){
Properties props = new Properties();
//设置smtp的服务器地址
props.put(ConstantsMail.MAIL_SMTP_HOST,ConstantsMail.CONN_SMTP_SERVER_NAME);
//设置smtp服务器要身份验证
props.put(ConstantsMail.MAIL_SMTP_AUTH,ConstantsMail.TRUE);
return props ;
}
}
PopupAuthenticator.java
package com.test.mail;
import javax.mail.*;
public class PopupAuthenticator extends Authenticator{
String username=null;
String password=null;
public PopupAuthenticator(){
}
public PasswordAuthentication performCheck(String user,String pass){
this.username = user;
this.password = pass;
return getPasswordAuthentication();
}
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(username, password);
}
}
RecMail.java
package com.test.mail;
import java.util.Properties;
import javax.mail.Folder;
import javax.mail.Message;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Store;
import javax.mail.internet.MimeMessage;
public class RecMail {
public static void main(String[] args) {
Properties props = MailUtil.initProps();
try {
PopupAuthenticator popAuthenticator = new PopupAuthenticator() ;
//身份验证
PasswordAuthentication auth = popAuthenticator.performCheck(ConstantsMail.CONN_SERVER_USER_NAME,ConstantsMail.CONN_SERVER_PASSWORD);
//获得session实例
Session session = Session.getInstance(props, popAuthenticator);
//获得连接协议
Store store = session.getStore(ConstantsMail.POP3);
store.connect(ConstantsMail.CONN_SMTP_SERVER_NAME, ConstantsMail.CONN_SERVER_USER_NAME, ConstantsMail.CONN_SERVER_PASSWORD);
Folder folder = store.getFolder(ConstantsMail.INBOX);
folder.open(Folder.READ_WRITE);
//邮件的总数
System.out.println("总共有"+MailUtil.getMessageCount(folder)+"封邮件。");
//新邮件的个数
System.out.println("新邮件的个数是"+MailUtil.getNewMessageCount(folder)+"封");
//邮件中没有读过的
System.out.println("已经读取了"+MailUtil.getUnreadMessageCount(folder)+"封");
Message messages[] = folder.getMessages();
if(messages.length==0){
System.out.println("未收到新邮件...");
}
for(int i=0;i<messages.length;i++){
System.out.println("第"+(i+1)+"条:"+":"+((MimeMessage)messages[i]).getSubject());
}
folder.close(true);
store.close();
}catch (Exception e) {
System.out.println("errors on "+e.getMessage());
}
}
}
SendMail.java
package com.test.mail;
import java.util.Properties;
import javax.activation.DataHandler;
import javax.activation.DataSource;
import javax.activation.FileDataSource;
import javax.mail.Address;
import javax.mail.Message;
import javax.mail.Multipart;
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 javax.mail.internet.MimeUtility;
public class SendMail {
public static void main(String[] args) {
System.out.println("sending message ......");
Properties props = MailUtil.initProps();
try {
PopupAuthenticator popAuthenticator = new PopupAuthenticator() ;
//身份验证
PasswordAuthentication auth = popAuthenticator.performCheck(ConstantsMail.CONN_SERVER_USER_NAME,ConstantsMail.CONN_SERVER_PASSWORD);
//获得session实例
Session session = Session.getInstance(props, popAuthenticator);
//发送人地址 后面显示是接收的邮箱中发件人的名字
Address addressFrom = new InternetAddress(ConstantsMail.MAIL_SENDER_ADDRESS,ConstantsMail.MAIL_SENDER_NAME);
//收件人地址 后面的参数是收件人打开邮件以后显示收件人的名称
Address addressTo = new InternetAddress(ConstantsMail.MAIL_RECEIVER_ADDRESS,ConstantsMail.MAIL_RECEIVER_NAME);
//抄送地址 后面的参数说明同收件人
Address addressCopy = new InternetAddress(ConstantsMail.MAIL_COPYER_ADDRESS,ConstantsMail.MAIL_COPYER_NAME);
//创建邮件体
Message message = new MimeMessage(session);
//设置邮件的内容
//message.setContent(content, model);
//message.setText("aaaaaaaaaaaaaaaaaaa");
//设置邮件的标题
message.setSubject(ConstantsMail.MAIL_TITLE);
//发件人地址
message.setFrom(addressFrom);
//收件人地址,可以多次添加
message.addRecipient(Message.RecipientType.TO,addressTo);
//抄送人地址,可以多次添加
message.addRecipient(Message.RecipientType.CC,addressCopy);
//上传附件
Multipart multipart = new MimeMultipart();
MimeBodyPart bodypart = new MimeBodyPart();
/*1 取得本地硬盘的文件上传
* 本地的文件当不使用setFileName的时候可以把文件的内容显示在下面
* 但是会出现乱码。。。。。。????
*/
DataSource datasource = new FileDataSource("E://my//集合.txt");
bodypart.setDataHandler(new DataHandler(datasource));
//文件下载时的标题,若不设置名称,则会把内容显示在下面,但是会出现乱码
bodypart.setFileName(MimeUtility.encodeWord("测试附件.doc","gb2312", null));
multipart.addBodyPart(bodypart);
/*2 直接创建附件上传。并且附件内容为"11111111"
* 自己创建的文件不能当作内容显示在下面,只能当作附件
* 若不设置文件名setFileName,则会临时产生一个名字
*/
MimeBodyPart bodypart1 = new MimeBodyPart();
//以下2种方式都可以
//bodypart1.setText("哈哈");
bodypart1.setContent("哈哈哈",ConstantsMail.MAIL_REC_PATTERN_1);
//文件下载时的标题
bodypart1.setFileName(MimeUtility.encodeWord("测试1.txt","gb2312", null));
multipart.addBodyPart(bodypart1);
//设置上传文件,可以上传多个文件
message.setContent(multipart);
//附件测试end...
message.saveChanges();
Transport transport = session.getTransport("smtp");
//连接发件人的服务器
transport.connect(ConstantsMail.CONN_SMTP_SERVER_NAME, ConstantsMail.CONN_SERVER_USER_NAME, ConstantsMail.CONN_SERVER_PASSWORD);
//发送至服务器
Transport.send(message);
//关闭连接
transport.close();
System.out.println("message send ......");
} catch (Exception e) {
System.out.println("errors on "+e.getMessage());
}
}
}
基本上是不用修改的,而且我觉得里面的说明应该是比较清楚的。
只需要修改ConstantsMail.java里面相应的参数就可以了。
绝对好用的代码。
相关推荐
首先,JavaMail API是Java平台上的核心库,它允许开发者在Java应用程序中处理邮件收发。JavaMail API提供了丰富的接口和类,用于创建、发送、读取和管理邮件。它支持标准的互联网邮件协议,如SMTP(Simple Mail ...
本篇文章将深入探讨一个基于Java的邮件系统客户端源码,该系统能够运行在任何支持Java的服务器系统平台上,实现了邮件收发的关键功能。 首先,邮件系统的核心在于对邮件协议的理解和实现。在这个Java邮件系统中,...
Java邮件系统设计主要涉及互联网通信协议,特别是SMTP和POP3,以及邮件的发送、接收和地址格式。在设计这样的系统时,理解这些基础知识至关重要。 首先,SMTP(简单邮件传输协议)是Internet上发送电子邮件的标准...
最后,使用`startActivityForResult()`方法启动Intent,这将打开可用的邮件应用列表供用户选择: ```java startActivity(Intent.createChooser(intent, "请选择邮件应用")); ``` 5. **处理选择的应用:** ...
Java POP3验证是一种在Java编程环境中实现邮件服务器身份验证的...这个过程涉及网络通信、身份验证以及邮件协议的理解,对于Java开发者来说是一项重要的技能,特别是在处理自动化邮件服务或应用中需要收发邮件的场景。
JavaMail API,作为Java平台中的一项强大工具,提供了丰富的功能支持,使开发者能够轻松地在应用程序中集成邮件收发能力。 #### 一、JavaMail简介 JavaMail是一个用于读取、写入、发送和接收电子邮件的Java库。它...
6. **SMTP/POP3/IMAP协议**:邮件应用需要与邮件服务器交互,这就涉及到SMTP(Simple Mail Transfer Protocol)用于发送邮件,POP3(Post Office Protocol version 3)或IMAP(Internet Message Access Protocol)...
这款软件支持多种协议,包括SMTP(Simple Mail Transfer Protocol)、POP3(Post Office Protocol version 3)和IMAP4(Internet Message Access Protocol version 4),使得用户能够通过各种邮件客户端进行收发邮件...
【邮箱管理系统】是一种用于组织和管理电子邮件的软件应用,它为用户提供了一站式的邮件收发、存储、搜索和管理服务。在IT行业中,构建这样的系统需要掌握多项关键技术和知识点。 首先,我们需要理解电子邮件的工作...
12. **Java Mail**:Java Mail API允许开发人员在Java应用中收发电子邮件,支持多种邮件协议,如SMTP、POP3、IMAP等。 13. **JAF (JavaBeans Activation Framework)**:JAF提供了一种标准方式来识别、操作和激活...
JavaMail依赖于另一个项目——Java Activation Framework (JAF),后者提供了对邮件协议的支持,例如SMTP(Simple Mail Transfer Protocol)用于发送邮件,POP3(Post Office Protocol Version 3)或IMAP(Internet ...
BlackBerry的Mail API提供了一系列强大的工具,可以帮助开发者轻松地在其应用程序中集成邮件收发功能。 - **Mail API类**:详细列出了Mail API中可用的各种类及其功能,这些类包括但不限于`MailMessage`、`...
6. 电子邮件的传递:电子邮件E-mail是通过邮件收发服务器进行传输的,答案是D。 7. CSS布局构建:在HTML中,`<div>`标签常用于构建页面布局,答案是B。 8. Java继承特性:Java中,一个类只能单一继承一个父类,但...
18. 电子邮件协议:在Internet上,用于收发电子邮件的协议是POP3(Post Office Protocol version 3)和SMTP(Simple Mail Transfer Protocol)。 19. CSS样式:取消超级链接的下划线可以通过`text-decoration:none`...
7. **电子邮件E-mail**:电子邮件系统依赖于邮件收发服务器来传输和接收电子文件。 8. **指针和数组**:在C/C++程序中,指针和指针的指针可以用来操作数组。给定程序的输出是2,4,因为指针p首先指向数组的第一个...
10. 电子邮件:电子邮件(E-mail)通过邮件收发服务器来传递用户电子文件。 11. Web服务器控件:`Wizard`、`AdRotator`、`Calender`是Web服务器控件,而`Input`是HTML元素,不属于Web服务器控件。 12. 交叉表查询...