`

利用java发邮件

    博客分类:
  • Java
阅读更多
网站发送邮件是一个常用功能,现在有相当一部分网站用户注册都需要通过Email验证合法性,而用javamail比较繁琐,apache又做了一件好事:在javamail的基础上封装java发送邮件业务,让用户可以通过简单的调用几个方法就可以实现邮件发送与接收。
  首先,这篇文章的测试环境是:jdk 1.6+MyEclipse 5.5.1 GA+javamail 1.4(在控制台测试的,所以没用到应用服务器)。
  然后在apache官网上下载Commons Email,下面是几个用Commons Email发邮件的方法。


package com.zhutou.email;
import java.net.MalformedURLException;
import java.net.URL;
import org.apache.commons.mail.EmailAttachment;
import org.apache.commons.mail.EmailException;
import org.apache.commons.mail.HtmlEmail;
import org.apache.commons.mail.MultiPartEmail;
import org.apache.commons.mail.SimpleEmail;
/**
* 用apache的Commons Email发送邮件
*
* @author www.5ipig.com/blog
*/
public class JavaMail {
  /**
   * 用apache的Commons Email发送不含附件的邮件
   *
   * @return 发送结果,是否发送成功
   */
  public String sendSingleMail() {
    String resultmsg = "发信失败!";
    SimpleEmail email = new SimpleEmail();
    email.setHostName("smtp.163.com");
    try {
      email.addTo("ajonjun@163.com", "ajonjun");
      email.setFrom("ajonjun@163.com", "ajonjun");
      // 请修改成你的邮箱账号和密码。
      email.setAuthentication("username", "password");
      email.setSubject("发信测试标题");
      email.setMsg("This is a simple test of commons-email");
      resultmsg = email.send();
      if (resultmsg != null) {
        resultmsg = "发送成功!";
      }
    } catch (EmailException e) {
      e.printStackTrace();
    }
    return resultmsg;
  }
  /**
   * 发送单个带附件的邮件
   *
   * @return 发送结果,是否发送成功
   */
  public String sendAttachmentsMail() {
    String resultmsg = "发信失败!";
    // 创建一个附件对象
    EmailAttachment attachment = new EmailAttachment();
    // 设置附件的地址,可以是本机地址(包括绝对地址和相对地址),
    //也可以是internet地址,如:http://www.5ipig.com/blog/attachment.php?fid=2
    attachment.setPath("E:\\1.jpg");
    attachment.setDisposition(EmailAttachment.ATTACHMENT);
    attachment.setDescription("Picture of gaylys");
    attachment.setName("gaylys");
    // 创建多文本邮件对象
    MultiPartEmail email = new MultiPartEmail();
    email.setHostName("smtp.163.com");
    try {
      email.addTo("ajonjun@163.com", "ajonjun");
      email.setFrom("ajonjun@163.com", "ajonjun");
      // 请修改成你的邮箱账号和密码。
      email.setAuthentication("username", "password");
      email.setSubject("带附件的邮件");
      email.setMsg("Here is the picture you wanted");
      // 将附件添加到邮件
      email.attach(attachment);
      // 发送邮件
      resultmsg = email.send();
      if (resultmsg != null && !"".equals(resultmsg)) {
        resultmsg = "发送成功!";
      }
    } catch (EmailException e) {
      e.printStackTrace();
    }
    return resultmsg;
  }
  /**
   * 发送html邮件
   *
   * @return 发送结果,是否发送成功
   */
  public String sendHtmlEmail() {
    String resultmsg = "发信失败!";
    // 创建邮件对象
    HtmlEmail email = new HtmlEmail();
    email.setHostName("smtp.163.com");
    try {
      email.addTo("ajonjun@163.com", "ajonjun");
      email.setFrom("ajonjun@163.com", "ajonjun");
      // 请修改成你的邮箱账号和密码。
      email.setAuthentication("username", "password");
      email.setSubject("发送html邮件的测试");
      // 嵌入附件地址
      URL url = new URL(
          "http://www.5ipig.com/blog/attachment.php?fid=2");
      String cid = email.embed(url, "3D桌面");
      // 设置编码格式,不设置会出现中文乱码。
      email.setCharset("GB2312");
      // 写入html代码
      email.setHtmlMsg("3D桌面 - <img src="\" alt="" />");
      // 设置替代文字
      email
          .setTextMsg("Your email client does not support HTML messages");
      // 发送邮件
      resultmsg = email.send();
      if (resultmsg != null && !"".equals(resultmsg)) {
        resultmsg = "发送成功!";
      }
    } catch (EmailException e) {
      e.printStackTrace();
    } catch (MalformedURLException e) {
      e.printStackTrace();
    }
    return resultmsg;
  }
  public static void main(String args[]) {
    JavaMail mail = new JavaMail();
    System.out.println(mail.sendHtmlEmail());
  }
}


  java发送邮件的基本方法也就这些,当然还有群发,我看了下,Commons Email好像没提供群发的功能,不过如果你有这个需要可以自己写一个:收信人是多个,用”,”分隔,根据收信人数循环发送邮件,也就是多次调用发邮件的方法。
  如果你是按照以上步骤写的代码,却不能发送邮件,看看是不是下面的错误:
Exception in thread “main” java.lang.NoClassDefFoundError: com/sun/mail/util/LineInputStream或者javax.mail.NoSuchProviderException: smtp

解决方案: JavaEE版本和JavaMail的版本不一致,请将sun公司上下载最新版本.如果还报这个错,找到myeclipse环境中的javaee.jar 包,用winrar或者其他解压缩工具打开,删除mail跟activation包,因为javaee.jar中的mail与javamail冲突。

没问题了。
分享到:
评论
1 楼 mianhuatangone 2011-01-06  
public static void send(String smtpServer, String to, String form,
String subject, String body) {
try {
Properties props = System.getProperties();

props.put("mail.smtp.host", smtpServer);// smtp.sina.com
props.put("mail.smtp.auth", "true");
Authenticator auth = new PopupAuthenticator();
Session session = Session.getInstance(props, auth);

Message msg = new MimeMessage(session);
msg.setFrom(new InternetAddress(form));
msg.setRecipients(Message.RecipientType.TO, InternetAddress.parse(
to, false));
msg.setSubject(subject);
msg.setText(body);

msg.setHeader("X-Mailer", "LOTONtechEmail");
msg.setSentDate(new Date());

MimeMultipart mp = new MimeMultipart();
MimeBodyPart contentMbp = new MimeBodyPart();
contentMbp.setContent(body, "text/html;charset=UTF-8");

mp.addBodyPart(contentMbp); // 添加附件
msg.setContent(mp);
Transport.send(msg);
System.out.println("邮件已发送");
} catch (Exception e) {
e.printStackTrace();
}
}

相关推荐

    java发送邮件功能

    在Java中,我们主要利用JavaMail API来实现这一目标。 JavaMail API是一个开源的Java库,它为Java应用程序提供了处理邮件的标准API。这个API包含了创建、发送、接收邮件所需的所有组件。为了实现邮件发送,我们需要...

    基于Java的邮件发送模板

    本篇文章将详细讲解如何利用Java实现邮件发送,并结合Apache的相关库来创建邮件发送模板,以提升效率和用户体验。 首先,JavaMail API是Java中用于处理电子邮件的主要库。它提供了丰富的API,可以用来创建、发送和...

    利用Java发送邮件(含附件)的例子

    以下是如何利用Java实现这一功能的详细步骤和关键知识点: 首先,你需要配置邮件发送的相关属性,这通常通过一个properties文件完成。在示例中,`utils.properties`文件包含了SMTP服务器地址、发件人的邮箱地址和...

    用java发送邮件

    总的来说,"JavaMailTest-master"项目是一个实践教程,教你如何利用JavaMail API创建一个能够发送邮件的应用。通过学习和理解这个项目,你将能够熟练掌握Java环境下发送邮件的技术,并能应用于各种实际场景,如自动...

    java发邮件 带附件 多媒体邮件

    本示例代码及说明适用于希望利用Java Mail API发送包含丰富格式内容邮件的开发者。 ### Java 发送带有附件及多媒体内容的邮件 #### 一、Java Mail API 简介 Java Mail API 是一个强大的工具包,用于发送、接收和...

    java发邮件 以及需要的jar包

    在Java编程中,发送电子邮件是一项常见的任务,常用于自动化通知、报表发送等场景。要实现这一功能,我们需要利用JavaMail API。本篇文章将详细介绍如何使用Java编写代码来发送邮件,并介绍所需的jar包。 首先,...

    利用Java并配置Foxmail发送邮箱(携带附件)

    如果你有`Java发邮箱(带附件).docx`文档,可以参考其中的示例代码进行学习,同时,`MailSendBean`可能是封装邮件发送逻辑的Java Bean类,包含了上述步骤的各个部分,便于代码组织和重用。 总的来说,理解Java ...

    java使用javaMail发送邮件

    通过上述步骤,开发者可以利用JavaMail API在Java应用程序中轻松地发送邮件。记住,为了确保邮件的稳定发送,需要根据实际的邮件服务器配置调整代码,比如是否使用TLS/SSL,以及相应的端口号和认证方式。

    Java发送带模版的邮件示例

    在Java编程中,发送带有模板的邮件是一项常见的任务,尤其对于企业级应用来说,通过电子...通过学习和理解这些知识点,你将能够利用Java实现在各种场景下发送带模板的邮件功能,为你的应用程序添加更丰富的通信手段。

    javaEmail,利用java发送邮件

    本教程将详细讲解如何利用Java发送邮件,包括所需的库、基本概念以及具体实现步骤。 首先,Java邮件API(JavaMail API)是Java平台中用于处理电子邮件的标准API,它定义了一组接口和类,允许程序员创建和发送电子...

    java基于socket 利用1邮件服务器发送邮件

    Java基于Socket利用163邮件服务器发送邮件是一个常见的编程任务,尤其在自动化通知、系统报警或者用户服务中广泛应用。在这个项目中,我们将深入探讨如何使用Java的JavaMail API和Socket通信来实现这一功能。 首先...

    java实现邮件发送

    本文将基于提供的描述及部分代码片段,详细介绍如何利用Java实现邮件发送功能。本教程涉及的关键知识点包括:配置邮件服务器、设置发件人与收件人信息、处理邮件验证以及附件的添加。 #### 配置邮件服务器 在发送...

    JAVA 利用163邮箱发邮件

    在Java中利用163邮箱发邮件,很实用的可以看看!!

    Java发邮件:通过Bean封装.rar

    然后,利用`Session`创建`MimeMessage`实例,设置邮件头信息(如发件人、收件人、主题等),添加正文和附件。最后,通过`Transport.send(message)`方法发送邮件。 7. **异常处理**: 在整个过程中,应充分考虑异常...

    java发送邮件实例

    Java程序可以利用SMTP服务发送邮件,但需要通过一个API来实现,JavaMail就是这样的工具。 JavaMail API是Java中用于处理邮件的接口库,它提供了创建、发送和接收邮件的功能。要使用JavaMail发送邮件,你需要以下...

    java发送邮件项目

    以下将详细介绍如何利用Java发送邮件,以及项目中的关键知识点。 首先,Java发送邮件主要依赖于JavaMail API,这是一个开源的Java库,允许开发者在Java应用程序中创建和发送电子邮件。为了使用JavaMail API,你需要...

    java邮件系统-javaweb项目

    Java邮件系统是一个基于Java Web技术构建的B/S(Browser/Server)架构的应用程序,它允许用户通过网页浏览器发送、接收和管理电子邮件。在本项目中,开发者利用了Java的强大力量,特别是对于网络通信和数据处理的...

    java发邮件例子代码

    这个例子代码将演示如何在Java环境中利用`commons-email-1.0.jar`库来发送带有附件的邮件。Apache Commons Email库提供了丰富的功能,简化了邮件发送过程。 首先,你需要在项目中引入`commons-email-1.0.jar`库。这...

Global site tag (gtag.js) - Google Analytics