Java发送邮件javax.mail的实现方法

直接上源码:
1. 邮件的基本信息(方便就直接设置为静态了)
下面最好是做为一个javabean

package com.lgf.Email; 

import java.util.Date; 

public class EmailMessage
{
  /**
   * 邮件的信息,可以自己进行设置。
   * 为了方便直接全部设置为静态
   */ 

// 收件人邮箱
  public static String TO = "xxx@xxx.com";
// 发件人邮箱
  public static String FROM = "xxx@xxx.com";
  public static String FROM_NAME = "xxx";
//  抄送人
  public static String CC="xxx@nxxx.com";
//  暗送人
  public static String BCC="xxx@nxxx.com";
// 邮件的类型
  public static String Email_Content = "text/plain";
// 邮件标题
  public static String Email_Subject = "Test Email With JavaMail";
// 邮件头
  public static String Email_Header = "This Is Email Header";
// 内容
  public static String Email_Body = "<a href=\"http://www.baidu.com\">This Is Email Body</a>";
// 服务器 比如QQ的可以设置为smtp.qq.com
  public static String Email_Host = "smtp.xxx.com";
// 发送时间
  public static Date sendDate = new Date();
// 是否需要验证用户名和密码
  public static boolean validate = true;
}

2. 服务器验证(就是一般登入时候的用户名和密码)

package com.lgf.Email; 

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

/**
 * 用户名和密码的验证
 * @author lgf
 *
 */
public class MailAuthenticator extends Authenticator{
  private String username="xxxxx";
  private String password="xxxxx";   

  public MailAuthenticator() {
    super();
  } 

  /**
   * 设置验证的用户名和密码
   */
  public MailAuthenticator(String userName , String password) {
    super();
    this.username = userName;
    this.password = password;
  }
  protected PasswordAuthentication getPasswordAuthentication()
  {
    return new PasswordAuthentication(this.username,this.password);
  }
} 

3. 发送邮件前设置信息和步骤

package com.lgf.Email; 

import java.util.Properties; 

import javax.activation.DataHandler;
import javax.activation.DataSource;
import javax.activation.FileDataSource;
import javax.mail.Address;
import javax.mail.Authenticator;
import javax.mail.BodyPart;
import javax.mail.Message;
import javax.mail.Multipart;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart; 

import com.lgf.SendEmail.MailAuthenticator; 

public class SendEmail
{ 

  /**
  * 发送普通邮件
  * @throws Exception
  */
  public void doSendNormalMail()
  {
//    获取系统环境
    Properties prop = new Properties();
    Authenticator auth = null;
//   判断发送邮件是否需要验证
    if (EmailMessage.validate)
    {
//      邮件服务器认证  用户名和密码
      auth = new MailAuthenticator();
    }
//   添加必要的信息
    prop.put("mail.smtp.host", EmailMessage.Email_Host);
    prop.put("mail.smtp.auth", "true");   

//    设置对话和邮件服务器进行通讯
    Session session = Session.getDefaultInstance(prop, auth);
//   在控制台显示Debug信息
    session.setDebug(true);
//   设置邮件对象
    Message message = new MimeMessage(session);
    try
    {
//      设置邮件主题
      message.setSubject(EmailMessage.Email_Subject);
//      设置邮件标题
      message.setHeader("Header", EmailMessage.Email_Header);
//      设置发送时间
      message.setSentDate(EmailMessage.sendDate); 

//      设置发信人地址 和 名字
      Address address = new InternetAddress(EmailMessage.FROM, EmailMessage.FROM_NAME);
//     把发件人信息添加到信息中
      message.setFrom(address);   

//     设置发件人地址
      Address toAddress = new InternetAddress(EmailMessage.TO);
//      设置接收人地址
      message.setRecipient(Message.RecipientType.TO, toAddress);   

//     设置多个收件人地址
//     message.addRecipient(Message.RecipientType.TO,new InternetAddress("xxx@xxx.com"));   

//      设置邮件格式
      message.setContent("Content", EmailMessage.Email_Content);
//      设置邮件内容  必须在设置文件格式后面
      message.setText(EmailMessage.Email_Body);  

//     保存上面添加的信息
      message.saveChanges();
//      发送邮件
      System.out.println("sendNormalEmail() 开始发送邮件……");
      Transport.send(message);
      System.out.println("发送成功!");
    } catch (Exception e)
    {
        System.out.println("出错");
        e.printStackTrace();
    }
  }   

  /**
   * 发送HTML格式的邮件
   */
  public void doSendHtmlMail()
  {
//    获取系统环境
    Properties prop = new Properties();  

    Authenticator auth = null;
    if (EmailMessage.validate)
    {
//      邮件服务器认证  用户名和密码
      auth = new MailAuthenticator();
    }
//   添加必要的信息
    prop.put("mail.smtp.host", EmailMessage.Email_Host);
    prop.put("mail.smtp.auth", "true");   

//    设置对话和邮件服务器进行通讯
    Session session = Session.getDefaultInstance(prop, auth);   

//   设置邮件对象
    Message message = new MimeMessage(session);
    try
    {
//      设置邮件主题
      message.setSubject(EmailMessage.Email_Subject);
//      设置邮件标题
      message.setHeader("Header", EmailMessage.Email_Header);
//      设置发送时间
      message.setSentDate(EmailMessage.sendDate); 

//      设置发信人地址 和 名字
      Address address = new InternetAddress(EmailMessage.FROM, EmailMessage.FROM_NAME);
//     把发件人信息添加到信息中
      message.setFrom(address);   

//     设置发件人地址
      Address toAddress = new InternetAddress(EmailMessage.TO);
//      设置接收人地址
      message.setRecipient(Message.RecipientType.TO, toAddress);   

//     设置多个收件人地址
//     message.addRecipient(Message.RecipientType.TO,new InternetAddress("xxx@xxx.com"));   

//     设置发送信息的内容  下面为发送hmml
//     设置邮件格式
      EmailMessage.Email_Content = "text/html; charset=utf-8";
      message.setContent(EmailMessage.Email_Body, EmailMessage.Email_Content);  

//     保存上面添加的信息
      message.saveChanges();
//      发送邮件
      System.out.println("doSendHtmlMail() 开始发送邮件……");
      Transport.send(message);
      System.out.println("发送成功!");
    } catch (Exception e)
    {
        System.out.println("出错");
        e.printStackTrace();
    }
  }
  /**
   * 发送带有附件格式的邮件
   */
  public void doSendAttachmentMail()
  {
//    获取系统环境
    Properties prop = new Properties();  

    Authenticator auth = null;
    if (EmailMessage.validate)
    {
//      邮件服务器认证  用户名和密码
      auth = new MailAuthenticator();
    }
//   添加必要的信息
    prop.put("mail.smtp.host", EmailMessage.Email_Host);
    prop.put("mail.smtp.auth", "true");   

//    设置对话和邮件服务器进行通讯
    Session session = Session.getDefaultInstance(prop, auth);   

//   设置邮件对象
    Message message = new MimeMessage(session);
    try
    {
//      设置邮件主题
      message.setSubject(EmailMessage.Email_Subject);
//      设置邮件标题
      message.setHeader("Header", EmailMessage.Email_Header);
//      设置发送时间
      message.setSentDate(EmailMessage.sendDate); 

//      设置发信人地址 和 名字
      Address address = new InternetAddress(EmailMessage.FROM, EmailMessage.FROM_NAME);
//     把发件人信息添加到信息中
      message.setFrom(address);   

//     设置发件人地址
      Address toAddress = new InternetAddress(EmailMessage.TO);
//      设置接收人地址
      message.setRecipient(Message.RecipientType.TO, toAddress);   

//     设置多个收件人地址
//     message.addRecipient(Message.RecipientType.TO,new InternetAddress("xxx@xxx.com"));   

//     设置发送信息的内容  下面为发送附件
      message.setContent(EmailMessage.Email_Body, EmailMessage.Email_Content);  

      BodyPart messageBodyPart = new MimeBodyPart();
      messageBodyPart.setText("bodypart");   

      Multipart multipart = new MimeMultipart();
      multipart.addBodyPart(messageBodyPart);   

      messageBodyPart = new MimeBodyPart();   

//     设置上传的资源
      DataSource source = new FileDataSource("E:\\3.doc");
//     添加到
      messageBodyPart.setDataHandler(new DataHandler(source));
//     设置文件名称,记得后缀名
      messageBodyPart.setFileName("test.doc");
      multipart.addBodyPart(messageBodyPart);  

      message.setContent(multipart);   

//     保存上面添加的信息
      message.saveChanges();
//      发送邮件
      System.out.println("doSendAttachmentMail() 开始发送邮件……");
      Transport.send(message);
      System.out.println("发送成功!");
    } catch (Exception e)
    {
        System.out.println("出错");
        e.printStackTrace();
    }
  }
  /**
   * @param args
   */
  public static void main(String[] args)
  {
//   new SendEmail().doSendNormalMail();
//   new SendEmail().doSendHtmlMail();
    new SendEmail().doSendAttachmentMail();
  } 

} 

以上就是Java发送邮件javax.mail的详细代码,希望对大家实现java邮件发送有所帮助。

(0)

相关推荐

  • java 出现问题javax.servlet.http.HttpServlet was not found解决方法

    javax.servlet.http.HttpServlet was not found:          最近做项目发现这个javax.servlet.http.HttpServlet was not found错误问题,经过上网查询解决了,这里记录下,可能能帮助到有需要的朋友. 1.我们遇到的错误显示如下: 2.我们右击有错误提示的文件夹,如下: 3.我们点击"配置构建路径",如下: 4.我们再点击"添加库",如下: 5.我们选中上图中标出的选项,再点击下一步

  • 浅析javax.servlet.Servlet,ServletContext接口

    1.ServletConfig接口用于描述Servlet本身的相关配置信息.ServletContext接口用于描述应用程序(server.xml中的一个Context配置,即一个虚拟目录)的相关信息.2.Servlet配置初始化参数,例如: 复制代码 代码如下: <servlet> <servlet-name>XXX</servlet-name> <servlet-class>Xxx</servlet-class> <init-param

  • java发送javax.mail邮件实例讲解

    平时我们网上逛网站的时候,经常会用到网站的注册.有很多方法,比如发短信验证,发邮箱验证.最近在SSH框架下,做了一个简单的邮件发送激活链接到邮箱,然后激活注册用户的一个功能.我用到的MailServer是易邮邮件服务器,引用的是javax.mail.jar包.javamail顾名思义,提供给开发者处理电子邮件相关的编程接口.它是Sun发布的用来处理email的API.它可以方便地执行一些常用的邮件传输. [常用类介绍] 下面有一些常用的类,给大家介绍一下: [Authenticator] 这个是

  • javax.mail.SendFailedException: Sending failed问题原因

    最近一直在使用邮件发送功能,老是遇到问题,后面才找到,原来并不是程序问题引起的,我吧问题整出来, javax.mail.SendFailedException: Sending failed; nested exception is: class javax.mail.MessagingException: 554 MI:STC 0,smtp10,DsCowLC7LwPACzRN7qcQAA--.2883S2 1295256512 at javax.mail.Transport.send0(Tr

  • java javax.annotation.Resource注解的详解

    java 注解:java javax.annotation.Resource  当我们在xml里面为类配置注入对象时,会发现xml文件会越来越臃肿,维护起来很麻烦.这时候我们可以使用注解这种机制来为类配置注入对象. Java为我们提供了 javax.annotation.Resource这个注解. spring框架提供了org.springframework.beans.factory.annotation.Autowired. 一般情况下我们使用 javax.annotation.Resour

  • 解决cannot be cast to javax.servlet.Filter 报错的问题

    cannot be cast to javax.servlet.Filter 报错, 原因servlet-api.jar冲突 使用maven开发web应用程序, 启动的时候报错: jar not loaded. See Servlet Spec 2.3, section 9.7.2. Offending class: javax/servlet/Servlet.class 然后输出错误: 严重: Exception starting filter encodingFilter java.lang

  • Java发送邮件javax.mail的实现方法

    直接上源码: 1. 邮件的基本信息(方便就直接设置为静态了) 下面最好是做为一个javabean package com.lgf.Email; import java.util.Date; public class EmailMessage { /** * 邮件的信息,可以自己进行设置. * 为了方便直接全部设置为静态 */ // 收件人邮箱 public static String TO = "xxx@xxx.com"; // 发件人邮箱 public static String F

  • Java KeyGenerator.generateKey的19个方法代码示例

    目录 示例1: EncryptByAes 示例2: main 示例3: wrapperPublicPriviteKeyTest 示例4: initHmacSHA224Key 示例5: run 示例6: initHmacSHA384Key 示例7: wrapperBlowfishKeyTest 示例8: generateMacSha1Key 示例9: ReadWriteSkip 示例10: generateKey 示例11: generateEncryptionSecret​ 示例12: init

  • java中javamail收发邮件实现方法

    概述 1.邮件相关的标准 厂商所提供的 JavaMail 服务程序可以有选择地实现某些邮件协议,常见的邮件协议包括: SMTP(Simple Mail Transfer Protocol) :即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式. POP3(Post Office Protocol – Version 3) :即邮局协议版本 3 ,用于接收电子邮件的标准协议. IMAP(Internet Mail Access Protocol) :即 In

  • java发送邮件的具体实现

    首先是继承自javax.mail.Authenticator的一个具体类.getPasswordAuthentication()方法也就是构建一个PasswordAuthentication对象并返回,有点费解JAVA Mail这样的设计意图,可能javax.mail.Authenticator为我们提供了附加的保证安全的验证措施吧. 复制代码 代码如下: package com.mzule.simplemail; import javax.mail.Authenticator;import j

  • Java发送邮件遇到的常见需求汇总

    基于SMTP发送一个简单的邮件 首先,需要一个认证器: package No001_基于SMTP的文本邮件; import javax.mail.Authenticator; import javax.mail.PasswordAuthentication; public class SimpleAuthenticator extends Authenticator { private String username; private String password; public Simple

  • Java 基于Jakarta Mail实现收发邮件

    Jakarta Mail API提供了一个独立于平台和协议的框架来构建邮件,完成邮件接收与发送功能.它也包含在Java EE平台中,也可以和Java SE平台一起使用. Jakarta Mail的前生是JavaMail.JavaMail最后一个版本是于2018年8月发布,已经停止更新.新项目应该使用Jakarta Mail. 现在很多邮箱默认关闭smtp,pop3,imap服务,需要在设置中手动开启. 如果邮箱是使用授权码,则需要生成授权码(代替下文中密码),这种方式更安全. 依赖 注意Jaka

  • java 发送邮件的实例代码(可移植)

    以一个web项目为例,代码是可以移植的 首先要导入mail.jar包,然后创建自己的类 1:HTMLSender类 复制代码 代码如下: package com.txq.mail; import java.util.Properties; import javax.mail.Message; import javax.mail.MessagingException; import javax.mail.NoSuchProviderException; import javax.mail.Sess

  • 利用Java发送邮件的实现代码

    前言 大家请注意:以下代码使用的测试邮箱为126的邮箱,实测可用,注意,个人测试时,注意发送的邮件内容,邮件内容邮箱服务器审查较严格,少有不慎就会被判定为垃圾邮件,进而就会给你返回一个错误码: 实例代码 import java.util.Date; import java.util.Properties; import javax.mail.Authenticator; import javax.mail.Message; import javax.mail.PasswordAuthentica

  • java发送邮件示例讲解

    本文实例讲解了java发邮件的详细过程,供大家参考,具体内容如下 1.邮件协议 发邮件的:SMTP (Simple Mail Transport  Protocal) 收邮件的协议:pop3 (Post Office Protocal 3) IMAP 新协议 发邮件也可以收邮件. (一步步的与服务器交互) SMTP : 2.收发邮件的过程: 一般情况下,smtp和pop3是两个服务器(主机). Smtp邮件的端口为25. POP3 端口 为110. 发邮件示例 1).安装foxmail: 2).

随机推荐