`
拖拖鞋
  • 浏览: 92274 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

使用javax.mail发送邮件

阅读更多
抽空找资料,做了一个发送邮件的demo,具体的说明都在注释里了。防止后面又忘了!
package sendEmail;

import java.util.Properties;

import javax.mail.Address;
import javax.mail.BodyPart;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Multipart;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.AddressException;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;

/**  
 *   
 * SendEmail  
 * 类作用描述  
 * @author yangchuang  
 * @since 2014-9-20 下午6:36:18    
 * @version 1.0.0  
 * 修改记录
 * 修改日期    修改人    修改后版本    修改内容
 */
public class SendEmail {
    /**  
     * Session对象,Session定义了全局的和每个用户的与邮件相关的属性,这些属性详细说明了客户机和服务器如何交流信息。
     */  
    private Session session;
    
    /**  
     * Message表示单个邮件消息,其属性包括消息类型、地址信息和所定义的目录结构。但是Message类是一个抽象类,必须实现它的一个子类。
     * Message类的主要方法有两部分,第一部分主要在发送邮件的时候使用,用于设置邮件的相关信息,包括邮件的发送者、接收者、主题和发送时间等。
     * 通常使用MimeMessage,它是Message类的一个派生类。
     */  
    private Message message;
    
    /**  
     * 是一个抽象类,用于邮件的发送。
     */  
    private Transport transport;
    
    /**  
     * 发送邮件服务器的主机名(smtp.163.com)
     */  
    private String host;
    
    /**  
     * 发送邮件的用户名 (xxxx@163.com)
     */  
    private String userName;
    
    /**  
     * 与用户名对应的密码(xxxxxx)
     */  
    private String pwd;
    
      
    /**  
     * 创建一个新的实例 SendEmail.  
     *  
     * @param host      发送邮件服务器的主机名(smtp.163.com)
     * @param userName  发送邮件的用户名(xxxx@163.com)
     * @param pwd       与用户名对应的密码(xxxxxx)
     * @throws MessagingException  
     */
    public SendEmail(String host, String userName, String pwd) throws MessagingException {
        Properties proTemp = new Properties();
        // 设置发送邮件的邮件服务器的属性
        proTemp.put("mail.smtp.host", host);
        // 需要经过授权,也就是有户名和密码的校验,这样才能通过验证
        proTemp.put("mail.smtp.auth", "true");
        // 通过proTemp属性对象获取Session实例
        session = Session.getDefaultInstance(proTemp);
        // 通过session对象获取Message实例
        message = new MimeMessage(session);
        // 通过session对象获取Message实例
        transport = session.getTransport("smtp");
        this.host = host;
        this.userName = userName;
        this.pwd = pwd;
    }

    public void send(String from, String address, String subject, String txt) throws AddressException {
        this.send(from, new String[]{address}, subject, txt);
    }

    public void send(String from, String[] addressesStr, String subject, String txt) throws AddressException{
        Address[] addresses = new Address[addressesStr.length];
        for(int i = 0; i < addressesStr.length;i++){
            addresses[i] = new InternetAddress(addressesStr[i]);
        }
        this.send(new InternetAddress(from), addresses, subject, txt);
    }

    public void send(Address from, Address[] addresses, String subject, String txt) {
        try {
            message.setFrom(from);
            
            // 用于设置邮件的接收者。有两个参数,第一个参数是接收者的类型,第二个参数是接收者。
            // 接收者类型可以是Message.RecipientType.TO,Message.RecipientType.CC和Message.RecipientType.BCC。
            // TO表示主要接收人,CC表示抄送人,BCC表示秘密抄送人。接收者与发送者一样,通常使用InternetAddress的对象。
            message.addRecipients(Message.RecipientType.TO, addresses);
            message.setSubject(subject);
            // 向multipart对象中添加邮件的各个部分内容,包括文本内容和附件
            Multipart multipart = new MimeMultipart();
            // 设置邮件的文本内容
            BodyPart contentPart = new MimeBodyPart();
            contentPart.setText(txt);
            multipart.addBodyPart(contentPart);
            message.setContent(multipart);
            message.saveChanges();
            // 链接
            transport.connect(host, userName, pwd);
            // 发送
            transport.sendMessage(message, message.getAllRecipients());
            // 关闭
            transport.close();
        }
        catch (AddressException e) {
            e.printStackTrace();
        }
        catch (MessagingException e) {
            e.printStackTrace();
        }
    }
    
    public void modifyUser(String userName, String pwd){
        this.userName = userName;
        this.pwd = pwd;
    }

    public Transport getTransport() {
        return transport;
    }

    public String getUserName() {
        return userName;
    }

    public String getPwd() {
        return pwd;
    }

}


测试代码
package sendEmail;

import javax.mail.MessagingException;

public class SendEmailTest {
    public static void main(String[] args) throws MessagingException {
        SendEmail sendEmail = new SendEmail("smtp.163.com", "XXXXXX@163.com", "xxxxxx");
        sendEmail.send("xxxxxx@163.com", new String[]{"xxxxxxxxx@qq.com","xxxxxxxxx@qq.com"}, "还没有收到了么!", "这才是测试邮件!");
        sendEmail.modifyUser("xxxxxxxxxx@163.com", "xxxxxxxxx");
        sendEmail.send("xxxxxxxxxx@163.com", new String[]{"xxxxxxxx@qq.com","xxxxxxxxxx@qq.com"}, "还没有收到了么!", "这才是测试邮件!");
    }
}

分享到:
评论

相关推荐

    基于Maven的javax.mail发送邮件例子程序

    基于Maven的javax.mail发送邮件例子程序 pom.xml添加依赖jar: &lt;groupId&gt;javax.mail &lt;artifactId&gt;mail ${javamail.version} &lt;/dependency&gt; &lt;javamail.version&gt;1.4.1&lt;/javamail.version&gt; /* 功能:...

    javax.mail-1.4.4.jar

    通过java扩展包javax.mail-1.4.4.jar实现邮件发送功能。 import javax.mail.Address; import javax.mail.BodyPart; import javax.mail.Message; import javax.mail.MessagingException; import javax.mail.Multipart...

    javax.mail发送邮件

    根据提供的文件信息,我们可以深入探讨...以上就是使用`javax.mail`发送邮件的整个流程。通过这种方式,我们可以轻松地集成邮件发送功能到Java应用中,无论是简单的通知邮件还是复杂的批量邮件发送场景都能应对自如。

    采用javax.mail发送邮件,可以发送附件

    采用javax.mail发送邮件,可以发送附件

    javax.mail-1.6.0.jar包及移入maven仓库语句

    要使用`javax.mail`发送邮件,你需要配置一个`Properties`对象,设置SMTP服务器信息,然后创建`Session`对象。之后,你可以创建`Message`对象,填充邮件内容,最后通过`Transport`对象发送邮件。例如: ```java ...

    javax.mail.jar下载

    在开发需要发送邮件功能的应用程序时,`javax.mail.jar` 是必不可少的依赖。 标题 "javax.mail.jar下载" 指出,开发者可能遇到了缺少这个库的问题,导致在尝试发送邮件时遇到错误。这通常是因为项目中没有正确地...

    java 基于javax.mail的邮件发送测试工具

    基于javax.mail的邮件发送测试工具

    javax.mail.jar-Java发送邮件API

    javax.mail.jar-Java发送邮件API。Apache Email基于javax.mail做了一个开源项目,参见:http://commons.apache.org/proper/commons-email/

    javax.mail-1.6.2_javamailjar1.6.2_javamail-1.6.2_javax.mail_java

    开发者可以通过创建 `Session` 实例,设置必要的 SMTP 服务器信息(如主机名、端口号、用户名和密码),然后使用 `Transport.send()` 方法发送邮件。 2. **POP3(Post Office Protocol version 3)** 和 **IMAP4...

    javax.mail.1.4.7.jar

    1. **Transport API**:这是发送邮件的主要接口,允许开发者通过SMTP(Simple Mail Transfer Protocol)协议将邮件发送到邮件服务器。Transport类提供了发送已构造好的Message对象的方法。 2. **Store API**:该API...

    javax.mail java 发送邮件的实现

    通过配置会话属性、创建`Message`对象以及使用`Transport`类,可以实现从Java程序发送邮件。同时,它还支持发送HTML内容、附件以及处理复杂的邮件格式。对于需要处理邮件功能的Java项目来说,`javax.mail` 是一个必...

    javax.mail发送邮件所需要jar及简单demo

    下面是一个简单的使用`javax.mail`发送邮件的示例代码,这个例子涵盖了多收件人、多抄送人、多密送人和多附件的功能: ```java import javax.mail.*; import javax.mail.internet.*; import java.util.*; public ...

    java发送邮件依赖包javax.mail.jar和activation.jar.zip

    Java发送邮件是开发中常见的一项任务,特别是...以上就是Java使用javax.mail.jar和activation.jar发送邮件的基本知识。这两个库的结合使用极大地简化了邮件操作,使得Java开发者能够方便地集成邮件功能到自己的应用中。

    采用java的javax.mail发送 mail

    要使用javax.mail发送邮件,首先需要在项目中引入相关的依赖。在这个例子中,`mail-1.4.1.jar`是Java Mail的一个版本,包含了发送邮件所需的类和接口。为了发送邮件,你需要做以下步骤: 1. 添加依赖:将`mail-...

    javax.mail-1.5.2源码

    7. **Protocol Support**: `javax.mail` 支持多种邮件协议,如POP3(Post Office Protocol v3)用于接收邮件,SMTP(Simple Mail Transfer Protocol)用于发送邮件,以及IMAP(Internet Message Access Protocol)...

    javax.mail.AuthenticationFailedException异常

    javax.mail.AuthenticationFailedException异常处理。

    javamail1.4.5和javax.mail-1.5.5.jar

    使用JavaMail时,开发者需要添加相应的jar包到类路径中,然后通过导入相应的包,创建和配置Session,建立与邮件服务器的连接,创建Message,设置邮件属性,最后通过Transport发送邮件。对于接收邮件,需要获取Store...

    发邮件程序需要的:javax.mail包

    发邮件程序需要的:javax.mail包

    javax.mail.jar

    5. 使用`Transport`发送邮件:创建好`Message`后,使用`Transport`对象的`send()`方法将其发送出去。 6. 关闭资源:操作完成后,记得关闭`Folder`和`Store`,释放资源。 四、高级特性 除了基本的邮件操作,Java ...

Global site tag (gtag.js) - Google Analytics