`

java 发送邮件 简单易操作

 
阅读更多
/**
 * Created by IntelliJ IDEA.
 * User: tsaowe
 * Date: 12-3-6
 * Time: 上午9:15
 */

import java.util.Date;
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.SendFailedException;
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;

public class MailSender {

    private String host;
    private Address from;
    private String username;
    private String password;
    private Address[] to;

    private String subject;
    private String message;

    public MailSender() {
        /* todo 这儿是发送邮件的服务器 */
        this.host = "smtp.????.???";
        try {
            /* todo 这儿填写发给别人的邮件地址,就是自己邮箱地址*/
            this.from = new InternetAddress("xxxx@xx.com");
        } catch (AddressException e) {
            e.printStackTrace();
        }
        this.username = "xxxx@xx.com"; //登录名,和上面邮件地址一致
        this.password = "xxxxxxxxxx";  //登录密码

        this.subject = "";
        this.message = "";
    }

    public MailSender(String host, String from, String username, String password){
        this.host = host;
        try {
            this.from = new InternetAddress(from);
        } catch (AddressException e) {
            e.printStackTrace();
        }
        this.username = username;
        this.password = password;

        this.subject = "";
        this.message = "";
    }

    public void addAddress(String to) {
        int length = 0;
        if(this.to == null || this.to.length == 0){
            length = 0;
        }else{
            length = this.to.length;
        }
        Address[] oldTo = this.to;
        this.to = new InternetAddress[length + 1];
        try {
            this.to[0] = new InternetAddress(to);
        } catch (AddressException e) {
            e.printStackTrace();
        }

        for(int i = 0; i<length; i++) {
            assert oldTo != null;
            this.to[i+1] = oldTo[i];
        }

    }

    public void setSubject(String subject) {
        this.subject = subject;
    }


    public void setMessage(String message) {
       this.message = message;
    }

    public String getMessage() {
        return this.message;
    }

    public boolean sendMail() {
        Properties props = new Properties();
        props.put("mail.smtp.host", this.host);
        props.put("mail.smtp.auth", "true");

        Session session = Session.getInstance(props, null);

        try {

            Message msg = new MimeMessage(session);
            msg.setFrom(this.from);
            Address[] address = this.to;
            msg.setRecipients(Message.RecipientType.TO, address);
            ((MimeMessage)msg).setSubject(this.subject,"utf-8");
            msg.setSentDate(new Date());

            BodyPart mdp=new MimeBodyPart();
            mdp.setContent(this.message,"text/html;charset=utf-8");
            Multipart mm=new MimeMultipart();

            mm.addBodyPart(mdp);


            msg.setContent(mm);
            msg.saveChanges();

            Transport transport = session.getTransport("smtp");
            transport.connect(host, username, password);
            transport.sendMessage(msg, msg.getAllRecipients());
            transport.close();

            System.out.println("Send mail: "+ msg.getSentDate());

            return true;

        } catch (MessagingException mex) {
            System.out.println("\n--Exception");

            System.out.println();
            Exception ex = mex;
            do {
                if (ex instanceof SendFailedException) {
                    SendFailedException sfex = (SendFailedException)ex;
                    Address[] invalid = sfex.getInvalidAddresses();
                    if (invalid != null) {
                        System.out.println("    ** Invalid Addresses");
                        for (Address anInvalid : invalid) System.out.println("         " + anInvalid);
                    }
                    Address[] validUnsent = sfex.getValidUnsentAddresses();
                    if (validUnsent != null) {
                        System.out.println("    ** ValidUnsent Addresses");
                        for (Address aValidUnsent : validUnsent) System.out.println("         " + aValidUnsent);
                    }
                    Address[] validSent = sfex.getValidSentAddresses();
                    if (validSent != null) {
                        System.out.println("    ** ValidSent Addresses");
                        for (Address aValidSent : validSent) System.out.println("         " + aValidSent);
                    }
                }
                System.out.println();
                if (ex instanceof MessagingException)
                    ex = ((MessagingException)ex).getNextException();
                else
                    ex = null;
            } while (ex != null);

            return false;
        }
    }

    public static void main(String[] args) {
        MailSender mailSenderInstance = new MailSender();
        mailSenderInstance.addAddress("xxxx@xxx.xxx");
        mailSenderInstance.setSubject("Test Mail");
        mailSenderInstance.setMessage("Test Mail");
        mailSenderInstance.sendMail();

    }
}

分享到:
评论

相关推荐

    java一键发送邮件,封装好的工具类

    本教程将详细讲解一个已经封装好的Java邮件发送工具类——`EasyEmailUtil`,它使得邮件发送变得简单易行,无需繁琐的配置,只需一键调用即可完成。 首先,`EasyEmailUtil`类通常会包含以下几个核心功能: 1. **...

    java定时生成execl并发送邮件

    POI库提供了丰富的API,使得这些操作变得简单易行。 其次,Quartz是Java中的一款强大的作业调度框架,它可以安排任务在特定的时间执行,如每天、每周或每月的某个时刻。在本例中,Quartz可以用来设定生成Excel和...

    java发送邮件必备的jar包(mail.jar和activation.jar)

    在Java编程中,发送电子邮件是一项常见的任务...总的来说,`mail.jar`和`activation.jar`是Java开发人员在处理邮件发送时不可或缺的工具,它们提供了完整的邮件处理功能,使得在Java程序中发送和接收邮件变得简单易行。

    java发邮件需要的jar和一个发邮件的例子,适用于jdk1.5

    Java发送邮件是通过JavaMail API实现的,这个API包含了处理电子邮件的各种功能,如创建、发送、接收邮件等。在Java中,为了发送邮件,我们需要两个关键的库:`mail.jar`和`activation.jar`,这两个库在提供的压缩包...

    java的邮件发送包mail.jar

    总之,`mail.jar`是Java开发者处理电子邮件不可或缺的工具,它提供了丰富的API,使得在Java应用程序中实现复杂的邮件功能变得简单易行。不论你是要发送简单的文本邮件,还是创建包含附件的多媒体邮件,或者是实现...

    第三方jar实现邮件发送

    这种方法不仅简单易行,而且可以满足大多数应用场景的需求。值得注意的是,随着技术的发展,现代项目可能倾向于使用更先进的库或服务来处理电子邮件,例如Spring Boot的邮件发送模块或外部云服务提供商(如SendGrid...

    java邮件发送依赖:activation.jar,mail.jar

    总的来说,JavaMail API与activation.jar的组合为Java开发者提供了一个强大且灵活的工具,使得在Java应用程序中实现邮件发送变得简单易行。理解并熟练掌握这两个库的使用,将极大地提升开发效率和邮件功能的质量。

    Java Mail和Commons-email发简单的邮件所用到的jar包

    这两个库为开发者提供了方便的API,使得在Java应用程序中实现邮件发送功能变得简单易行。以下将详细阐述这两个库以及它们所需的jar包。 首先,`activation.jar`是JavaBeans Activation Framework (JAF)的一部分,它...

    基于java的邮件服务器源程序.zip

    JavaMail API是Java平台上的标准API,它提供了处理SMTP(简单邮件传输协议)、POP3(邮局协议版本3)和IMAP(因特网消息访问协议)的能力。通过这个API,开发者可以构建应用程序来与邮件服务器进行交互,实现发送...

    Android高级应用源码-Android调用谷歌STMP发送邮件 MailDemo.zip

    MailDemo应用可能包含输入框让用户填写邮件收件人、主题和内容,以及发送按钮触发邮件发送操作。使用Android的布局文件(如activity_main.xml)和事件监听器(如OnClickListener)来实现这一交互。 7. **异步处理*...

    基于Java SMTP POP协议的邮件系统设计源码

    本项目是一款基于Java语言开发的邮件系统后台源码,该系统采用了SMTP(简单邮件传输协议)和POP(邮局协议)技术,这些技术是业界广泛使用的标准协议,用于发送和接收电子邮件。 项目结构设计合理,源码中包含了...

    java开源包101

    Java发送短信包 LemonSMS LemonSMS 这个Java库可以让开发者在应用程序中集成使用GSM调制解调器或兼容电话来发送SMS消息。 远程桌面 Java Remote Desktop.tar Java Remote Desktop 是一个Java 的远程桌面软件,支持...

    股市交易交割单电子邮件发送程序

    “jmail邮件发送探讨程序”暗示了该程序可能使用了JMail组件或类似的Java邮件API来实现邮件发送功能。JMail是用于Java应用程序的邮件发送库,支持SMTP、POP3和IMAP协议,可以用来发送HTML格式的邮件。开发者需要理解...

    java开源包6

    Java发送短信包 LemonSMS LemonSMS 这个Java库可以让开发者在应用程序中集成使用GSM调制解调器或兼容电话来发送SMS消息。 远程桌面 Java Remote Desktop.tar Java Remote Desktop 是一个Java 的远程桌面软件,支持...

    java开源包9

    Java发送短信包 LemonSMS LemonSMS 这个Java库可以让开发者在应用程序中集成使用GSM调制解调器或兼容电话来发送SMS消息。 远程桌面 Java Remote Desktop.tar Java Remote Desktop 是一个Java 的远程桌面软件,支持...

    Java Mail中文文档

    JavaMail API 是Java编程语言中用于处理电子邮件的接口和类集合,它允许开发人员构建能够读取...无论是简单的发送邮件,还是复杂的邮件服务器交互,JavaMail API 都提供了完善的接口和类库,使得邮件处理变得简单易行。

    java开源包4

    Java发送短信包 LemonSMS LemonSMS 这个Java库可以让开发者在应用程序中集成使用GSM调制解调器或兼容电话来发送SMS消息。 远程桌面 Java Remote Desktop.tar Java Remote Desktop 是一个Java 的远程桌面软件,支持...

    张孝祥全 java 全集

    - **SMTP/POP3 协议**:简单邮件传输协议(SMTP)用于发送邮件,邮局协议(POP3)用于接收邮件。 - **实践案例**:利用JavaMail API实现自动发送邮件的功能。 ### 四、联系方式提供 - **联系方式**:为了获取更多...

    java开源包5

    Java发送短信包 LemonSMS LemonSMS 这个Java库可以让开发者在应用程序中集成使用GSM调制解调器或兼容电话来发送SMS消息。 远程桌面 Java Remote Desktop.tar Java Remote Desktop 是一个Java 的远程桌面软件,支持...

    Java 高 级 编 程

    4. **Java Mail 编程**:JavaMail API提供了发送和接收电子邮件的能力。通过JavaMail,开发者可以轻松实现SMTP(简单邮件传输协议)、POP3(邮局协议)和IMAP(因特网消息访问协议)等功能,创建复杂的邮件系统,如...

Global site tag (gtag.js) - Google Analytics