`

java mail发送邮件

 
阅读更多
JavaMail API是一种可选的、能用于读取、编写和发送电子消息的包(标准扩展)。您可使用这种包创建邮件用户代理(Mail User Agent ,MUA) 类型的程序,它类似于Eudora、Pine及Microsoft Outlook这些邮件程序。其主要目的不是像发送邮件或其他邮件传输代理(Mail Transfer Agent,MTA)类型的程序那样用于传输、发送和转发消息。换句话说,用户可以与MUA类型的程序交互,以阅读和撰写电子邮件。MUA依靠MTA处理实际的发送任务。
常用的四种协议:
·SMTP
简单邮件传输协议(SMTP)是用于传送电子邮件的机制。在JavaMail API环境中,您的基于JavaMail的程序将与您公司或Internet服务提供商(ISP)的SMTP服务器通信。该SMTP服务器将会把消息转发给用作接收消息的SMTP服务器,最后用户可通过POP或IMAP协议获取该消息。由于支持身份验证,所以不需要SMTP服务器是一种开放的转发器,但需要确保SMTP服务器配置正确。JavaMail API中没有集成用于处理诸如配置服务器以转发消息或添加/删除电子邮件帐户这一类任务的功能。
·POP
POP的含义是邮局协议,当前的版本为3,也称作POP3,该协议是在RFC 1939中定义的。POP是Internet上的大多数人用来接收邮件的机制。它为每个用户的每个邮箱定义支持,这是它所做的全部工作,也是大多数问题的根源。在使用POP协议时,人们熟悉的很多功能,如查看收到了多少新邮件消息的功能,POP根本不支持。这些功能都内置到诸如Eudora或Microsoft Outlook之类的邮件程序中,能为您记住接收的上一封邮件,以及计算有多少新邮件这类信息。因此,使用JavaMail API时,如果想获取这类信息,将需要由自己进行计算。
·IMAP
IMAP是用于接收消息的更加高级的协议,它是在RFC 2060中定义的。IMAP的含义是“Internet消息访问协议”,当前版本是第4版,也称作IMAP4。使用IMAP时,您的邮件服务器必须支持该协议。您不能只是简单地把程序转变为支持IMAP,而不是支持POP,就指望能支持IMAP中的一切。假定您的邮件服务器支持IMAP,那么基于JavaMail的程序就可利用在服务器上拥有多个文件夹的用户,并且这些文件夹可以被多个用户共享的功能。
由于IMAP协议具有更高级的功能,您也许会想IMAP应该被每一个人使用,但事实不是这样。因为IMAP会加重邮件服务器的负荷,它需要服务器接收新消息,发送消息给请求的用户,并在多个文件夹中为每个用户维护这些消息。而这要集中备份,因而长期下去用户的文件夹会变得越来越大,当磁盘空间用光了时,每个人都会遭受损失。而使用POP协议时,已保存消息可以解除服务器的重负。
·MIME
MIME的含义是“多用途的网际邮件扩充协议”。它不是一种邮件传输协议,相反,它定义传输的内容:消息的格式、附件等。许多文档都定义了MIME协议,包含:RFC 822、RFC 2045、RFC 2046和RFC 2047。作为JavaMail API的用户,一般不需要担心这些格式。但是,这些格式确实存在,并为您的程序所用。
NNP和其他协议
由于JavaMail API分开了提供程序和其他部分,所以您可以轻松地为附加协议添加支持。Sun公司提供第3方提供程序清单,这些提供程序要利用 Sun公司不支持的少见的协议。在这份清单中,您将会看到对NNTP(网络新闻传输协议)[新闻组]、S/MIME(安全多用途的网际邮件扩充协议)及其他协议的提供支持的第3方提供程序。
下面为发送Email的具体实例代码:
Java代码 
import java.util.Date; 
import java.util.Properties; 
 
import javax.activation.DataHandler; 
import javax.activation.FileDataSource; 
import javax.mail.Authenticator; 
import javax.mail.Multipart; 
import javax.mail.PasswordAuthentication; 
import javax.mail.internet.InternetAddress; 
import javax.mail.internet.MimeBodyPart; 
import javax.mail.internet.MimeMultipart; 
import javax.mail.internet.MimeUtility; 
 
/**
* java send mail demo
* @author Michael sun
*/ 
public class JavaMailSend { 
 
    /**
     * send mail
     * @param subject
     * @param from
     * @param to
     * @param text
     * @param filenames
     * @param mimeType
     */ 
    private void sendmail(String subject, String from, String[] to, 
            String text, String[] filenames, String mimeType) { 
        try { 
            Properties props = new Properties(); 
 
            String smtp = "smtp.163.com"; // 设置发送邮件所用到的smtp 
            String servername = "xxxx"; 
            String serverpaswd = "xxxx"; 
 
            javax.mail.Session mailSession = null; // 邮件会话对象 
            javax.mail.internet.MimeMessage mimeMsg = null; // MIME邮件对象 
 
            props = java.lang.System.getProperties(); // 获得系统属性对象 
            props.put("mail.smtp.host", smtp); // 设置SMTP主机 
            props.put("mail.smtp.auth", "true"); // 是否到服务器用户名和密码验证 
            // 到服务器验证发送的用户名和密码是否正确 
            SmtpAuthenticator myEmailAuther = new SmtpAuthenticator(servername, 
                    serverpaswd); 
            // 设置邮件会话 注意这里将认证信息放进了Session的创建参数里 
            mailSession = javax.mail.Session.getInstance(props, 
                    (Authenticator) myEmailAuther); 
            // 设置传输协议 
            javax.mail.Transport transport = mailSession.getTransport("smtp"); 
            // 设置from、to等信息 
            mimeMsg = new javax.mail.internet.MimeMessage(mailSession); 
            if (null != from && !"".equals(from)) { 
                InternetAddress sentFrom = new InternetAddress(from); 
                mimeMsg.setFrom(sentFrom); // 设置发送人地址 
            } 
 
            InternetAddress[] sendTo = new InternetAddress[to.length]; 
            for (int i = 0; i < to.length; i++) { 
                System.out.println("发送到:" + to[i]); 
                sendTo[i] = new InternetAddress(to[i]); 
            } 
 
            mimeMsg.setRecipients( 
                    javax.mail.internet.MimeMessage.RecipientType.TO, sendTo); 
            mimeMsg.setSubject(subject, "gb2312"); 
 
            MimeBodyPart messageBodyPart1 = new MimeBodyPart(); 
            // messageBodyPart.setText(UnicodeToChinese(text)); 
            messageBodyPart1.setContent(text, mimeType); 
 
            // 附件传输格式 
            Multipart multipart = new MimeMultipart(); 
            multipart.addBodyPart(messageBodyPart1); 
 
            for (int i = 0; i < filenames.length; i++) { 
                MimeBodyPart messageBodyPart2 = new MimeBodyPart(); 
 
                String filename = filenames[i].split(";")[0]; 
                String displayname = filenames[i].split(";")[1]; 
                // 得到数据源 
                FileDataSource fds = new FileDataSource(filename); 
                // BodyPart添加附件本身 
                messageBodyPart2.setDataHandler(new DataHandler(fds)); 
                // BodyPart添加附件文件名 
                messageBodyPart2.setFileName(MimeUtility 
                        .encodeText(displayname)); 
                multipart.addBodyPart(messageBodyPart2); 
            } 
            mimeMsg.setContent(multipart); 
            // 设置信件头的发送日期 
            mimeMsg.setSentDate(new Date()); 
            mimeMsg.saveChanges(); 
            // 发送邮件 
            transport.send(mimeMsg); 
            transport.close(); 
            System.out.println("发送到成功!!!"); 
        } catch (Exception e) { 
            e.printStackTrace(); 
        } 
    } 
 
    /**
     * @param args
     */ 
    public static void main(String[] args) throws Exception { 
        String title = "title";// 所发送邮件的标题 
        String from = "xxxx@163.com";// 从那里发送 
        String sendTo[] = { "xxx@test.com.cn" };// 发送到那里 
        // 邮件的文本内容,可以包含html标记则显示为html页面 
        String content = "test java send mail !!!!!!<br><a href=\"http://sjsky.iteye.com/\">My blog</a>"; 
        // 所包含的附件,及附件的重新命名 
        String fileNames[] = { "d:\\test\\test.png;test.png" }; 
 
        JavaMailSend test = new JavaMailSend(); 
        try { 
            // MailSender mailsender = new MailSender(); 
            test.sendmail(title, from, sendTo, content, fileNames, 
                    "text/html;charset=gb2312"); 
        } catch (Exception ex) { 
            ex.printStackTrace(); 
        } 
    } 
 
    /**
     * Smtp认证
     */ 
    class SmtpAuthenticator extends Authenticator { 
        String username = null; 
        String password = null; 
 
        /**
         * SMTP身份验证
         * @param username
         * @param password
         */ 
        public SmtpAuthenticator(String username, String password) { 
            super(); 
            this.username = username; 
            this.password = password; 
        } 
 
        /**
         * @return pass
         */ 
        public PasswordAuthentication getPasswordAuthentication() { 
            return new PasswordAuthentication(this.username, this.password); 
        } 
    } 
分享到:
评论

相关推荐

    java mail发邮件

    在你提供的压缩包文件中,包含了三个关键元素:activation.jar、mail.jar以及SendMail.java,这些都是Java Mail发邮件所需的基本组件。 `activation.jar` 是JavaBeans Activation Framework (JAF) 的一部分,它是...

    java Mail 发送邮件及邮件附件

    Java Mail 发送邮件及邮件附件 Java Mail 是一个广泛使用的 Java 库,用于发送电子邮件。以下是 Java Mail 发送邮件及邮件附件的知识点。 Java Mail 简介 Java Mail 是一个 Java 库,提供了发送电子邮件的功能。...

    Java Mail 发送邮件

    ### Java Mail 发送邮件知识点详解 #### 一、概述 Java Mail API 是一个用于发送与接收电子邮件的标准 Java 库,支持多种协议如 SMTP (Simple Mail Transfer Protocol) 和 POP3 (Post Office Protocol version 3) ...

    java mail 发送邮件

    Java Mail 是一个用于处理电子邮件的开源API,它允许开发者通过编程方式发送、接收和管理邮件。在Java应用程序中,我们通常使用JavaMail API来实现邮件的自动化操作,比如发送带有附件的邮件、群发邮件等。下面将...

    java mail 发送邮件代码与架包

    Java Mail 是一个用于处理电子邮件的开源API,它允许开发者通过编程方式发送、接收和操作邮件。这个API提供了广泛的协议支持,包括SMTP(简单邮件传输协议)用于发送邮件,POP3和IMAP4用于接收邮件。在Java Mail中,...

    Java mail发送邮件

    利用Java mail发送邮件,用到的一些类,一些方法,写的很简陋

    使用 java mail 发送邮件

    要使用Java Mail发送邮件,首先需要添加相应的依赖库到项目中。对于Android项目,通常会通过Gradle来引入。 1. 添加依赖: 在项目的build.gradle文件中,添加以下依赖: ```groovy dependencies { ...

    Java Mail发送邮件脚本及所需全部Jar包

    下面我们将详细探讨Java Mail发送邮件脚本的核心知识点,以及在实际操作中可能需要的Jar包。 1. **JavaMail API**:JavaMail API是Java中处理电子邮件的标准库,由JavaMail项目维护。它提供了一系列接口和类,包括`...

    java mail 发邮件 demo程序

    这个“java mail 发邮件 demo程序”是为了演示如何使用JavaMail API发送电子邮件而创建的一个简单示例。在这个DEMO程序中,我们将深入探讨JavaMail API的核心概念以及如何构建一个实际的邮件发送功能。 首先,...

    Java mail发送邮件(源代码带注释)

    这个标题“Java mail发送邮件(源代码带注释)”表明我们将讨论如何使用JavaMail API来实现电子邮件的发送功能。描述提到,通过简单的赋值和测试,我们可以快速实现邮件发送,这表明提供的源代码应该是一个易于理解且...

    用java mail发邮件源码,支持多种邮局,支持单发和群发

    Java Mail 是一个用于处理电子邮件的开源API,它允许开发者通过编程方式发送、接收和管理邮件。这个源码可能包含了一套完整的解决方案,可以与多种邮局(如Gmail, Yahoo, Hotmail等)进行交互,并且支持单个收件人和...

    java mail发送邮件(源代码+注释)

    Java Mail 是一个强大的开源API,用于处理电子邮件的发送和接收。这个API允许开发者在Java应用程序中集成邮件功能,包括SMTP(简单邮件传输协议)和POP3(邮局协议第三版)等邮件服务协议。本教程将详细介绍如何使用...

    java mail 邮件发送

    以下是一个简单的Java Mail发送邮件的示例代码: ```java import javax.mail.*; import javax.mail.internet.*; public class EmailSender { public static void main(String[] args) throws Exception { // ...

    java mail 发送QQ邮件

    要使用Java Mail发送QQ邮件,首先需要在QQ邮箱设置中开启“POP3/SMTP/IMAP”服务,并获取授权码。授权码是QQ邮箱为第三方应用提供的一种安全验证方式,不同于普通密码。 ### 3. 添加依赖 在Java项目中,我们需要...

    Java Mail邮件发送源码下载

    Java Mail邮件发送是Java开发中常见的一项功能,用于在应用程序中发送电子邮件。Java Mail API提供了一个标准的接口,使得开发者可以方便地实现SMTP(简单邮件传输协议)和其他邮件协议的功能。下面将详细介绍Java ...

    Java Mail demo (仅发送邮件)

    下面是一个简化的Java Mail发送邮件的步骤,展示了一些关键API的使用: 1. 引入Java Mail依赖:首先确保项目中包含了Java Mail的相关库,通常通过Maven或Gradle等构建工具添加依赖。 2. 创建Properties对象:设置...

Global site tag (gtag.js) - Google Analytics