今天 突然想对现有的工程增加邮件发送功能,上网找了一些资料,结果很纳闷,邮件在发送的过程中发件人地址这里频繁的报错,没有任何验证的代码存在,试想一下实际情况,不可能我平时写什么发件人就可以发送过去了吧。后来在网上又找了些JAVA验证这一类资料,可惜,可能版本升级太快,这些方法已经无法在JAVAMAIL 1.4版里用到了,于是我在官方下了API文档,找到了这样一个方法
public static Session getInstance(java.util.Properties props, Authenticator authenticator)
Get a new Session object. 每次新建会话时,我们都应该在这里填入验证明信息,让我们看看这个方法的第二个参数
public abstract class Authenticator extends java.lang.Object
这个类是抽象类,但是API文档里没有给出这个类的继承类。OK,让我们自己去继承它好了
static class SmtpAuth extends javax.mail.Authenticator {
private String user,password;
public void getuserinfo(String getuser,String getpassword){
user = getuser;
password = getpassword;
}
protected javax.mail.PasswordAuthentication getPasswordAuthentication(){
return new javax.mail.PasswordAuthentication(user,password);
}
}
因为我图方便,我把SmtpAuth 设置成为静态内部类,看看Authenticator 的这个方法
这就是当需要密码验证的时候此方法被呼叫,好了,返回一个PasswordAuthentication类。查出他的构造函数
PasswordAuthentication(java.lang.String userName, java.lang.String password)
Initialize a new PasswordAuthentication
于是我们可以设计username和password成员了。。于是整个验证细节也就明了拉!下面是我设计的一个简单的
import java.util.Date;
import java.util.Properties;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.AddressException;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
public class Mail {
static class SmtpAuth extends javax.mail.Authenticator {
private String user,password;
public void getuserinfo(String getuser,String getpassword){
user = getuser;
password = getpassword;
}
protected javax.mail.PasswordAuthentication getPasswordAuthentication(){
return new javax.mail.PasswordAuthentication(user,password);
}
}
/**
* @param args
* @throws MessagingException
* @throws AddressException
*/
@SuppressWarnings("static-access")
public static void main(String[] args) throws AddressException, MessagingException {
// TODO 自动生成方法存根
Properties props = new Properties();
Session sendMailSession;
Transport transport;
SmtpAuth sa = new SmtpAuth();
sa.getuserinfo("tw", "1234");
sendMailSession = Session.getDefaultInstance(props, sa);
transport = sendMailSession.getTransport("smtp");
transport.connect("134.98.83.32","tw", "1234");
props.put("mail.smtp.host", "134.98.83.32");
props.put("mail.smtp.auth", "true");
Message newMessage = new MimeMessage(sendMailSession);
newMessage.setFrom(new InternetAddress("tw@zjdw.com"));
newMessage.setRecipient(Message.RecipientType.TO, new InternetAddress("tw@zjdw.com"));
newMessage.setSubject("hello world");
newMessage.setSentDate(new Date());
newMessage.setText("这是一个测试的例子");
transport.send(newMessage);
}
}
OK。验证成功!
分享到:
相关推荐
开发者可以通过配置服务器地址、端口、用户名和密码来实现身份验证。 2. **POP3(Post Office Protocol version 3)**: POP3 用于从邮件服务器下载邮件。JavaMail 提供了 `com.sun.mail.pop3` 包,其中包含 `POP3...
4. **认证机制**:在处理需要身份验证的邮件服务器时,JavaMail 支持包括SMTP AUTH在内的多种认证方式,如简单的用户名和密码、NTLM或OAuth2。 5. **会话和属性**:JavaMail 中的`Session`对象是所有邮件操作的基础...
3. **身份验证和安全**:JavaMail支持SSL和TLS加密,确保在不安全的网络上安全地传输敏感信息。 4. **会话和属性**:使用`Session`对象,开发者可以配置邮件服务器的连接参数,如用户名、密码、端口号等。`...
此外,对于需要身份验证的邮件服务器,JavaMail可以通过提供用户名和密码来实现。 7. **邮件附件**: - `Multipart` 类用于创建包含多个部分的邮件,比如文本、HTML和附件。`MimeBodyPart` 和 `MimeMultipart` 类...
Apache Commons Email库为Java开发者提供了发送电子邮件的高级API,支持HTML邮件、多部分消息、附件、SMTP身份验证、SSL/TLS连接等。版本1.4是这个库的一个稳定版本,它包含了之前版本的改进和修复,使得邮件发送...
然后通过`Session.getInstance()`方法创建邮件会话,可以指定身份验证信息。 ```java Properties props = new Properties(); props.put("mail.smtp.host", "smtp.example.com"); props.put("mail.smtp.port", ...
在处理Microsoft Exchange服务器时,确保正确设置服务器的身份验证方式和端口。 总的来说,JavaMail API是Java开发者处理电子邮件的强大工具,涵盖了邮件通信的各个方面,但使用时需要对其工作原理和相关协议有深入...
例如,设置 SMTP 主机名和是否需要身份验证。 ```java Properties props = new Properties(); props.put("mail.smtp.host", "smtp.126.com"); props.put("mail.smtp.auth", "true"); ``` #### 1.3 创建认证器 如果...
同时,`Authenticator` 类用于处理身份验证,可以自定义认证策略。此外,JavaMail 还提供了异步发送邮件的支持,以及与现代邮件服务提供商(如 Gmail、Outlook)集成的能力。 总之,JavaMail 是一个强大且灵活的库...
4. **认证支持**:对于需要身份验证的SMTP服务器,Apache Commons Email支持用户名和密码的传递,以及使用JavaMail API的认证机制。 5. **易于使用**:通过简单的API调用,开发者可以快速设置邮件的发件人、收件人...
10. **Java Authentication and Authorization Service (JAAS)**: 提供了一种机制来管理和验证用户身份,以及授权用户访问特定资源。 11. **Java RMI (Remote Method Invocation)**: 支持Java对象间的远程调用,是...
8. **Java Authentication and Authorization Service (JAAS)**:JAAS提供了用户身份验证和权限管理的框架,有助于实现安全性。 9. **Java Management Extensions (JMX)**:JMX允许创建、管理和监控Java应用程序的...
Commons Email提供了许多高级功能,如发送HTML邮件、添加附件、设置抄送和密送、支持SMTP身份验证以及错误处理等。通过这个库,开发者可以轻松地构建复杂的电子邮件,而无需深入理解底层的JavaMail API。 3. **mail...
它支持发送HTML邮件、多部分邮件(包括附件)、发送带图片的邮件,以及进行SMTP身份验证等高级功能。 在使用这些jar包时,开发者需要将它们添加到项目的类路径中,然后通过导入相应的包名,调用提供的类和方法来...
10. **安全**:J2EE提供了一套全面的安全模型,包括身份验证、授权、加密等机制,保护应用程序和数据的安全。 通过"J2EE+Tutorial中文版.chm"这个文档,学习者可以了解到J2EE的完整体系,理解各种组件的作用,掌握...
- 不同的邮件服务提供商可能需要不同的身份验证方式,例如OAuth2,这时可能需要额外的库和配置。 - SSL/TLS加密通常用于安全地连接SMTP服务器,需确保正确配置。 - 发送附件时,要正确设置MIME类型,避免数据丢失...
在这个例子中,我们创建了一个`SimpleEmail`对象,设置了SMTP服务器信息,包括主机名、端口、用户名和密码(用于身份验证),然后指定了发件人、收件人、主题和邮件正文。最后,调用`send()`方法发送邮件。 总的来...
3. **wss4j-1.5.11.jar**:Web Services Security for Java(WSS4J)是Apache提供的安全框架,它为CXF提供了Web服务安全支持,如数字签名、加密、身份验证等。 4. **jetty-server-7.2.2.v20101205.jar** 和 **jetty...
- **身份验证**:使用JAAS(Java Authentication and Authorization Service)进行身份验证。 - **授权**:通过Web.xml中的元素控制访问权限。 **2.4 用户验证的必要条件** - 使用HTTP基本认证或表单登录等方式...
3. 创建`Session`对象,使用之前设置的属性,并可选择提供用户名和密码进行身份验证。 4. 创建`MimeMessage`对象,设置发件人、收件人、主题和邮件内容。 5. 使用`Transport`类的`send`方法发送邮件。 接收邮件则...