`
阅读更多

需要jar包:activation.jar和mail.jar

都是来自网上。

我首先在src下建了一个properties文件,存放信息,这里就不写了。

下面是一个自己封装的邮件类:

/**
* 邮件类,一个邮件对象可以看作一封邮件
* 可以有多个附件。
* */
public class Email {
        // 发件人
        private static String from ;
       // smtp主机
       private static String host;
       //发件邮箱的用户名
       private static String username;
      //发件邮箱的密码
      private static String password;
       // smtp主机端口
      private static String port;
      private static MyAuthenticator myAuthenticator =null;
      private BodyPart mbpContent = null;
      private MimeMessage msg = null;
      private Multipart mp = null;
/*
* 读取配置文件,初始化参数
* */
       static{
                   Reader r = null;
                   try {
                              r = new FileReader(new File("src/mail.properties"));
                              Properties p = new Properties();
                             p.load(r); 
                             from = p.getProperty("from");
                             host = p.getProperty("host");
                             username = p.getProperty("username");
                             password = p.getProperty("password");
                             port = p.getProperty("port");
                             myAuthenticator = new MyAuthenticator(username,password);
                    } catch (FileNotFoundException e) {
                             e.printStackTrace();
                    } catch (IOException e) {
                             e.printStackTrace();
                    }finally{
                             try {
                                     if(r != null)
                                          r.close();
                            } catch (IOException e) {
                                   // TODO Auto-generated catch block
                                  e.printStackTrace();
                            }
                      }
 }
/**
* 构造方法,
* 根据props构建session
* 根据session构建MimeMessage对象,
* 创建MimeMultipart对象,并将其加入到MimeMessage对象中
* 创建BodyPart邮件正文,并将其加入到MimeMultipart对象中
* 设置发送者 和 时间
* */
public Email(){
                Properties props = new Properties();;
                props.put("mail.smtp.host", host);
                props.put("mail.smtp.auth", "true");
                props.put("mail.smtp.port", port);
                Session session = Session.getDefaultInstance(props,myAuthenticator);
                msg = new MimeMessage(session);
                mp = new MimeMultipart();
                mbpContent = new MimeBodyPart();
               try {
                         msg.setFrom(new InternetAddress(from));
                         msg.setContent(mp);
                          mp.addBodyPart(mbpContent);
                         msg.setSentDate(new Date());
                 } catch (AddressException e) {
                         e.printStackTrace();
                 } catch (MessagingException e) {
                         e.printStackTrace(); 
                }
  }
/**
* 设置邮件主题
* @param subject 邮件主题
* */
public void setSubject(String subject){
        try {
               //解决中文乱码
               subject = MimeUtility.encodeText(subject);
               msg.setSubject(subject); 
         } catch (UnsupportedEncodingException e) {
                e.printStackTrace();
          } catch (MessagingException e) {
                 e.printStackTrace();
          }
}
/**
* 设置接受者
* @param receiveUser 接受者地址
* */
public void setReceiveUser(String receiveUser){
         try {
                      InternetAddress[] address ={ new InternetAddress(receiveUser)};
                      msg.setRecipients(Message.RecipientType.TO, address);
          }catch (MessagingException e) {
                      e.printStackTrace();
          }
}
/**
* 设置邮件正文。
* @param content 邮件正文内容
* */
public void setContent(String content){
         try {
                   mbpContent.setText(content);
            } catch (MessagingException e) {
                   e.printStackTrace();
            }
}
/**
* 添加邮件附件,可以添加对个附件。
* @param affix 附件的地址
* @param affixName 附件的名字
* */
public void addFile(String affix,String affixName){
              BodyPart messageBodyPart= new MimeBodyPart();
             DataSource source = new FileDataSource(affix);
             try {
                      messageBodyPart.setDataHandler(new DataHandler(source));
                     //解决附件的中文乱码
                     try {
                           affixName = MimeUtility.encodeText(affixName);
                      } catch (UnsupportedEncodingException e) {
                             e.printStackTrace();
                       }
                      messageBodyPart.setFileName(affixName);
                      mp.addBodyPart(messageBodyPart);
              } catch (MessagingException e1) {
                         e1.printStackTrace();
             }
}
/**
* 发生邮件,利用工具类Transport实现
*/
public boolean sendMail() {
          try {
                     Transport.send(msg);
           } catch (MessagingException e) {
                      return false;
           } 
           return true; 
}

}
/**
* 继承至Authenticator
* 用于对邮件发送时的授权和验证
* */
class MyAuthenticator extends Authenticator{
           private String username; 
           private String password;

                          public MyAuthenticator(String username, String password) {
                                      super();
                                       this.username = username; 
                                       this.password = password; 
                          }
                          public PasswordAuthentication getPasswordAuthentication(){
                                         return new PasswordAuthentication(username, password);
                         }
                }

 

JAVA邮件发送的大致过程是这样的的:

1、构建一个继承自javax.mail.Authenticator的具体类,并重写里面的getPasswordAuthentication()方法。此类是用作登录校验的,以确保你对该邮箱有发送邮件的权利。

2、构建一个properties文件,该文件中存放SMTP服务器地址等参数。

3、通过构建的properties文件和javax.mail.Authenticator具体类来创建一个javax.mail.Session。Session的创建,就相当于登录邮箱一样。剩下的自然就是新建邮件。

4、构建邮件内容,一般是javax.mail.internet.MimeMessage对象,并指定发送人,收信人,主题,内容等等。

5、使用javax.mail.Transport工具类发送邮件。

MimeMessage-----------相当于一个邮件,可以设置发件人,收件人啦等。

MimeMultipart-------------相当于邮件的正文和邮件的集合。邮件的正文和附件看是同样的东西。

MimeBodyPart-----------邮件的正文或附件。

Transport---------工具类,负责发送邮件。

 

javamail中BodyPart的setText与setContent的区别;
setContent可以指定发送内容的格式,如:html,plain等,
setText只发送纯文本格式的数据
注意:在设置html时,setContent(htmlString,"text/html;charset=\"utf-8\"");记得加上字符编码.

若邮件正文是为html,且其中有图片等元素。
需要mimeMuilpart.setSubType("related")
    mixed--------范围最大,可加文字或超文本,内嵌资源,附件
    related--------可加文字或超文本,内嵌资源
    alternative-----可加文字或超文本
bodypart.setContendID();<img src="cid:"/>---------------不会将图片以附件的形式显示出来,若不写,<img src="filename"/>,亦可以达到效果,但内嵌资源会以附件的形式在邮件里显示。

分享到:
评论

相关推荐

    常规JavaMail 邮件发送实用类

    "常规JavaMail 邮件发送实用类"标题所指的,通常是一个自定义的Java类,封装了JavaMail API的基本操作,使得邮件发送变得更加简单和便捷。这类实用类一般包含配置SMTP服务器、设置邮件内容、添加附件等功能。 ...

    使用JAVAMail代发邮件

    这个类称为 MailInfo,包含了邮件的各种信息,例如邮件服务器的主机名和端口号、邮件发送者的地址、邮件接收者的地址、邮件主题、邮件内容、邮件附件等。 在 MailInfo 类中,我们定义了多个成员变量,用于存储邮件...

    javamail邮件发送工具类

    JavaMail邮件发送工具类是Java开发中用于发送电子邮件的标准库,它提供了丰富的API来处理复杂的邮件功能。在JavaMail中,我们可以通过创建特定的类和对象来实现邮件的发送。以下将详细介绍这些类以及如何使用它们。 ...

    JavaMail邮件发送Deom

    JavaMail邮件发送Demo是Java开发中用于实现电子邮件发送的一个实例,它依赖于两个关键的库:activation.jar和mail.jar。这两个库提供了JavaMail API,使得Java开发者能够方便地与各种邮件服务器进行交互,完成邮件的...

    javamail邮件发送实例

    JavaMail邮件发送实例是Java开发中常见的一个应用场景,主要用于实现程序自动发送电子邮件的功能。这个实例可以帮助开发者理解如何使用JavaMail API来构建邮件服务。在JavaMail API中,我们可以使用MimeMessage类...

    javamail邮件发送源码

    JavaMail邮件发送源码是Java开发中用于发送电子邮件的一个库,它提供了丰富的API来处理SMTP、POP3和IMAP等邮件协议。这个简单的javamail实例表明,开发者已经成功地测试了邮件发送功能,确保其在实际应用中可以正常...

    javamail邮件发送项目

    【javamail邮件发送项目】是一个基于Java技术的邮件发送解决方案,主要利用Spring框架进行配置,结合FreeMarker(FTL)模板技术实现邮件内容的动态生成,并具备异步发送及批量处理邮件的能力,最多可同时处理1000份...

    javamail邮件发送接收测试

    这个“javamail邮件发送接收测试”是开发者在学习过程中创建的一个测试项目,旨在帮助理解和实践 JavaMail 的核心功能。通过这个项目,我们可以深入理解如何使用 JavaMail API 来实现邮件的发送和接收。 JavaMail ...

    Spring实现JavaMail邮件发送功能

    在本篇文章中,我们将深入探讨如何利用Spring来实现JavaMail邮件发送,以及在实际应用中需要注意的关键点。 首先,我们需要理解JavaMail API的基础概念。JavaMail是一个用于处理邮件的开放源码API,它允许开发者...

    javamail邮件发送程序

    JavaMail邮件发送程序是Java平台上的一个开源库,用于处理电子邮件的发送和接收。这个程序允许开发者通过SMTP(简单邮件传输协议)、POP3(邮局协议)或IMAP(因特网消息访问协议)等标准协议来收发邮件。在Java EE...

    JavaMail邮件发送源码 非常简单

    2. **获取Session对象**:使用`Properties`对象创建一个`Session`实例,它是邮件会话的容器,可以存储邮件发送的配置信息。 3. **创建Message对象**:通过`Session`对象创建一个`Message`实例,这代表了你要发送的...

    JavaMail邮件发送(带附件)

    JavaMail邮件发送(带附件)

    JavaMail发送邮件的例子

    2. `javax.mail.Transport`:用于实际的邮件发送,与邮件服务器进行通信。 3. `javax.mail.Message`:表示一个邮件对象,包含邮件的所有信息,如发件人、收件人、主题、正文等。 4. `javax.mail.internet....

    javamail邮件发送

    JavaMail邮件发送是Java开发中一个常见的任务,用于程序自动化发送电子邮件。这个技术基于JavaMail API,它提供了一组丰富的接口和类,使得开发者能够轻松地处理邮件的发送、接收和管理。在JavaMail中,主要涉及的...

    JavaMail邮件发送

    JavaMail邮件发送是一种在Java应用程序中发送电子邮件的技术。它是一个开源的Java库,允许开发者通过SMTP(简单邮件传输协议)或其他邮件传输协议向互联网上的邮件服务器发送邮件。这个程序是用Java编写的,并且在...

    JavaMail邮件发送-能发送附件和带背景音乐的邮件的小系统

    JavaMail邮件发送是一个常见的开发需求,它允许程序员通过编程方式发送包含文本、附件甚至多媒体内容的电子邮件。在Java中,JavaMail API提供了这样的功能,它是一个开源库,用于处理SMTP(简单邮件传输协议)、POP3...

    Javamail邮件发送

    这个“Javamail邮件发送”项目很可能是为了演示如何使用 Javamail API 来实现邮件发送功能,包括单独发送和群发邮件。 首先,我们需要引入 Javamail 的相关依赖。在 Maven 项目中,可以在 `pom.xml` 文件中添加以下...

    java javamail 邮件发送

    在`test.java`文件中,你可以看到这些步骤的实现,通过运行该文件进行邮件发送的测试。请注意,为了安全起见,实际应用中不应硬编码敏感信息如用户名和密码,而应使用环境变量或配置文件。 总的来说,JavaMail提供...

    JavaMail邮件发送程序所需JAR包

    JavaMail邮件发送程序所需JAR包,包含:commons-email-1.2.jar, activation.jar, mail.jar, commons-email-1.2-sources.jar, commons-email-1.2-javadoc.jar。

Global site tag (gtag.js) - Google Analytics