`
yiyu
  • 浏览: 186626 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

使用javamail通过需要身份验证的smtp服务器发送邮件

    博客分类:
  • java
 
阅读更多
使用javamail发送邮件时,如果smtp服务器需要身份验证,我们需要继承
javax.mail.Authenticator自己实现一个类,该类覆盖getPasswordAuthentication()
方法,返回一个包含用户名、口令信息的PasswordAuthentication,然后
在获取Session时指定这个我们自己实现的类。同时我们还需要指定"mail.smtp.auth"
属性为"true"。以下是示例代码:

发送邮件的类如下:
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 MessageSender {
	protected String to = null;
	protected String server = null;
	protected String user = null;
	protected String password = null;
	
	public MessageSender(String to, String server, String user, String password) {
		this.to = to;
		this.server = server;
		this.user = user;
		this.password = password;
	}
	
	public void send(String content) throws AddressException, MessagingException {
		Properties props = new Properties();
		props.put("mail.smtp.host", server);
		props.put("mail.smtp.auth", "true");

	    Session session = Session.getInstance(props, new MyAuthenticator(user, password));
	    
	    Message msg = new MimeMessage(session);

	    msg.setRecipients(Message.RecipientType.TO,  InternetAddress.parse(to));

	    msg.setSubject("test");
		msg.setText(content);

	    Transport.send(msg);
	}
}


继承Authenticator自己实现的类如下:

import javax.mail.Authenticator;
import javax.mail.PasswordAuthentication;

public class MyAuthenticator extends Authenticator {
	protected String id = "";
	protected String password = "";
	
	public MyAuthenticator(String id, String password) {
		this.id = id;
		this.password = password;
	}
	
	protected PasswordAuthentication getPasswordAuthentication() {
		return new PasswordAuthentication(id, password);
	}
}

分享到:
评论

相关推荐

    通过sina的smtp验证的Java发送邮件

    通过Sina的SMTP验证发送邮件需要使用JavaMail API,并配置Properties对象、Session对象、MimeMessage对象和Transport对象。这些对象的配置和使用是发送邮件的关键步骤。通过本文,我们了解了JavaMail API的基本使用...

    Java编程实现邮件发送(含身份验证)

    身份验证在邮件发送中扮演着安全的角色,特别是当使用SMTP服务器时。常见的身份验证方式有SMTP-AUTH,它允许客户端在发送邮件前进行身份验证,通常支持用户名和密码的方式。JavaMail API 提供了 `Authenticator` 类...

    JavaMail(JAVA邮件服务器)API详解 chm.rar

    JavaMail API使得开发者能够通过标准的Java程序接口与邮件服务器进行通信,实现邮件的发送和接收。 相关协议一览章节会涵盖电子邮件系统中涉及的各种协议。SMTP用于邮件的发送,它是互联网上邮件传递的基础;POP3...

    使用smtp实现Java发送邮件源码

    在Java中,我们可以使用JavaMail API来通过SMTP服务器发送邮件。下面将详细介绍如何使用SMTP和JavaMail API实现邮件发送功能。 首先,我们需要了解SMTP的工作原理。SMTP是一种基于文本的协议,它定义了邮件服务器...

    发送邮件时进行身份验证

    然而,为了确保邮件发送的安全性和防止滥用,邮件服务器通常要求发送者进行身份验证。本文将深入探讨如何在Java中进行邮件发送的身份验证,以及相关的安全考虑。 首先,我们来了解JavaMail API。这是Java官方提供的...

    smtp.rar_SMTP代码_SMTP服务器_java smtp_smtp

    4. **身份验证**:在实际应用中,SMTP服务器可能需要进行身份验证,防止未经授权的用户发送垃圾邮件。这通常涉及到用户名和密码的验证,或者更安全的认证机制如TLS/SSL。 5. **邮件格式**:SMTP传输的邮件通常遵循...

    smtp.rar_java smtp_smtp_smtp协议_邮件的发送

    总结起来,通过Java的SMTP实现邮件发送,你需要理解SMTP协议的基本原理,掌握JavaMail API的使用,以及根据实际情况配置SMTP服务器的参数。这涉及到网络通信、身份验证、邮件格式等多个方面的知识。同时,了解不同...

    java smtp发送邮件

    另外,一些邮件服务提供商可能需要通过OAuth2进行身份验证,这时需要使用特定的库,如JavaMail的Authenticator子类。 总的来说,Java SMTP发送邮件涉及JavaMail API的使用,SMTP服务器的配置,以及邮件内容的构建。...

    Android中使用JavaMail发送邮件

    通过以上步骤,你可以实现在Android应用中使用JavaMail API直接发送邮件,无需用户参与,只需要网络连接和正确的SMTP服务器配置。这种方式在发送错误报告、日志等自动化场景中非常有用。但请注意,由于JavaMail的...

    javaMail实现发送邮件的demo

    在上述代码中,我们使用了 `Session` 类来建立与 SMTP 服务器的连接,并通过 `Authenticator` 实现了身份验证。`MimeMessage` 类用于创建邮件对象,我们可以设置发件人、收件人、主题和正文。最后,`Transport.send...

    javaMail 发邮件

    此外,如果你的邮件服务器需要身份验证,还需要提供一个Authenticator来处理登录信息。 总的来说,JavaMail是Java开发中发送和接收电子邮件的标准库,提供了丰富的功能和灵活性,适用于各种应用场景。通过熟练掌握...

    smtp认证的邮件发送程序

    2. **HELO/EHLO命令**:客户端向服务器发送HELO或EHLO命令,表明自己的身份。EHLO用于支持扩展SMTP的服务器,提供了更多功能。 3. **SMTP认证**:如果服务器支持SMTP认证,它会在响应中提示客户端进行认证。客户端...

    用Java Socket实现SMTP邮件发送

    2. 使用Socket的`getOutputStream`获取输出流,通过输出流向服务器发送命令。 3. 编写命令发送逻辑,例如使用PrintWriter发送EHLO、AUTH、MAIL FROM、RCPT TO、DATA等命令。 4. 对于输入流(通常是Socket的`...

    android使用javamail发送邮件jar包

    注意,某些SMTP服务器可能需要更复杂的设置,例如SSL/TLS连接或特定的身份验证机制,这需要你根据实际情况进行调整。 在实际项目中,你可能还需要处理附件、HTML内容、多部分消息等复杂情况。JavaMail API提供了...

    javamail邮件群发、单发_邮件发送

    然后,通过 `Session` 对象初始化邮件会话,并进行身份验证: ```java Session session = Session.getInstance(props, new Authenticator() { protected PasswordAuthentication getPasswordAuthentication() { ...

    SMTP发送邮件.docx

    在Java中,我们通常使用`java.net.Socket`类来建立与SMTP服务器的连接,以及`java.io`包中的类进行数据的读写。在给出的代码示例中,展示了如何通过SMTP发送邮件的完整过程。 首先,代码创建了一个`Socket`对象,...

    JavaMail邮件发送源码 非常简单

    为了确保邮件发送的成功,开发者需要了解SMTP服务器的设置,包括是否需要SSL/TLS加密连接,以及正确的端口号。某些邮件服务商如Gmail、Yahoo、Outlook等可能需要开启"不安全的应用程序访问"权限。 总的来说,...

    使用Socket结合SMTP/POP3邮件协议发送和接收邮件

    使用SMTP,一个客户端可以连接到SMTP服务器,提交邮件,然后服务器负责将邮件转发到目的地。SMTP通常用于发送邮件,但不处理接收邮件,因此我们需要结合其他协议来完成完整的邮件交互。 POP3是另一种关键的邮件协议...

    javamail发送、接收邮件

    1. **配置邮件会话**:首先,需要创建一个`Properties`对象来设置邮件服务器的信息,例如SMTP服务器的主机名和端口。然后,使用`Session.getInstance()`方法创建一个邮件会话实例,其中传入`Properties`对象和`...

Global site tag (gtag.js) - Google Analytics