`
lianshisheng
  • 浏览: 28216 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

java发email

    博客分类:
  • Java
阅读更多

一个简单的文本邮件

我们的第一个例子是利用你本地的邮件服务器向"John Doe"发送一个基本邮件信息。

import org.apache.commons.mail.SimpleEmail;

...

  SimpleEmail email = new SimpleEmail();

  email.setHostName("mail.myserver.com");

  email.addTo("jdoe@somewhere.org", "John Doe");

  email.setFrom("me@apache.org", "Me");

  email.setSubject("Test message");

  email.setMsg("This is a simple test of commons-email");

  email.send();

调用setHostName("mail.myserver.com")来设置发送信息的SMTP服务器地址。如果你不设置,将会使用系统属性"mail.host"。

○发送带附件的邮件

为了向一个邮件添加附件,你需要使用MultiPartEmail这个类。这个类的工作方式和SimpleEmail类似,但是其重载了attach()方法使其可以向邮件添加附件。你可以通过附加或者内联来添加无限数量的附件,这些附件将采用MIME编码。

最简单的方式是使用EmailAttachment类引用你得附件来添加附件。

下面的例子我们将创建一个图片的附件。把图片附加在邮件中并发送它。

import org.apache.commons.mail.*;

...

  // Create the attachment

  EmailAttachment attachment = new EmailAttachment();

  attachment.setPath("mypictures/john.jpg");

  attachment.setDisposition(EmailAttachment.ATTACHMENT);

  attachment.setDescription("Picture of John");

  attachment.setName("John");

  // Create the email message

  MultiPartEmail email = new MultiPartEmail();

  email.setHostName("mail.myserver.com");

  email.addTo("jdoe@somewhere.org", "John Doe");

  email.setFrom("me@apache.org", "Me");

  email.setSubject("The picture");

  email.setMsg("Here is the picture you wanted");

  // add the attachment

  email.attach(attachment);

  // send the email

  email.send();

你也可以使用EmailAttachment引用一个非本地的URL文件。当发送邮件时,URL文件会被自动下载下来附件在邮件中。

下面的例子演示如何把apache的徽标附件在邮件中发送给John 。

import org.apache.commons.mail.*;

...

  // Create the attachment

  EmailAttachment attachment = new EmailAttachment();

  attachment.setURL(new URL("http://www.apache.org/images/asf_logo_wide.gif"));

  attachment.setDisposition(EmailAttachment.ATTACHMENT);

  attachment.setDescription("Apache logo");

  attachment.setName("Apache logo");

  // Create the email message

  MultiPartEmail email = new MultiPartEmail();

  email.setHostName("mail.myserver.com");

  email.addTo("jdoe@somewhere.org", "John Doe");

  email.setFrom("me@apache.org", "Me");

  email.setSubject("The logo");

  email.setMsg("Here is Apache's logo");

  

  // add the attachment

  email.attach(attachment);

  // send the email

  email.send();

 

○发送HTML格式的邮件

发送HTML格式邮件要使用HtmlEmail类。这个类的工作方式很像使用附加方法设置html内容的MultiPartEmail类类似,如果接收者不支持HTML邮件将替换成普通的文本和内联图片。

在下面例子中,我们使用HTML格式内容和以俄国内联图像。

import org.apache.commons.mail.HtmlEmail;

...

  // Create the email message

  HtmlEmail email = new HtmlEmail();

  email.setHostName("mail.myserver.com");

  email.addTo("jdoe@somewhere.org", "John Doe");

  email.setFrom("me@apache.org", "Me");

  email.setSubject("Test email with inline image");

  // embed the image and get the content id

  URL url = new URL("http://www.apache.org/images/asf_logo_wide.gif");

  String cid = email.embed(url, "Apache logo");

  // set the html message

  email.setHtmlMsg("<html>The apache logo - <img src=\"cid:"+cid+"\"></html>");

  // set the alternative message

  email.setTextMsg("Your email client does not support HTML messages");

  // send the email

  email.send();

首先,注意,调用embed函数返回一个字符串。这个字符串是一个随机的标识符用来引用一个图像标签中的图像。下一步,在这个例子中我们没有调用setMsg()函数。这个方法在HtmlEmail中仍然可用,但是如果你使用内联图像时就不应该使用,应该使用setHtmlMsg()函数和setTextMsg()函数。

○调试

JavaMail API支持一个调试选项,如果你遇到了问题这个可能非常有用。你可以通过调用setDebug(true)来激活调试模式,调试信息将被输出到标准输出中。

○验证

如果SMTP服务器需要验证,你可以在发送邮件前调用setAuthentication(userName,password)设置帐号和密码。这个将会创建一个DefaultAuthenticator实例,JavaMail API在发送邮件时会使用它。你的服务器必须支持RFC2554标准。

你可以执行更复杂的验证方法,例如通过创建javax.mail.Authenticator对象的子类向用户显示一个对话框。你需要覆盖getPasswordAuthentication()方法来处理用户的信息。要使用新的Authenticator类,需要使用Email.setAuthenticator方法。

○处理退回信息

通常,不能被传输的邮件将被返回给发送者。然而,某些情况,你想把它发送到一个不同的地址,你只需在发送邮件前调用setBounceAddress(emailAddressString)方法。

技术提示: 当SMTP服务器不能传输邮件时,它们不会关心邮件的信息来决定错误信息发送到哪里,而是引用SMTP "envelope sender"的值。JavaMail基于在JavaMail Session上的mail.smtp.from属性来设置这个值。 (Commons Email使用System.getProperties()初始化JavaMail Session) 如果这个属性没有设置,JavaMail使用"from"地址.如果你的邮件已经设置了 bounceAddress 属性, 当Session初始化的时候Commons Email使用它来设置mail.smtp.from的值,会覆盖你曾经对mail.smtp.from的设置。

 

提示:这个仅是用来处理返回邮件的方法。特别地,"Errors-to:" SMTP头是被废弃的,用来控制退回信息是不被信任的。也要注意,使用一个不受信任的"from"地址被认为是一个最差的方式,除非你也设置了返回邮件地址。如果你的应用程序允许用户在邮件中输入"from"地址,你应用设置一个受信任的退回地址。

分享到:
评论

相关推荐

    java发Email源码

    java发Email源码

    java发email的例子

    本文将详细讲解如何使用Java发送电子邮件,基于提供的标题“java发email的例子”以及描述“java发email的例子,自己以前写的发送email,初学者可以直接使用”。我们将深入探讨SMTP(Simple Mail Transfer Protocol)...

    java发邮件 java发email

    4. **创建Message对象**:`Message`对象代表邮件本身,使用`MimeMessage`类创建它,并设置发件人、收件人、主题和正文。例如: ```java MimeMessage message = new MimeMessage(session); message.setFrom(new ...

    java发EMail的代码

    3. **创建Message对象**:使用`session`创建`Message`对象,设置发件人、收件人、主题和正文。 ```java Message message = new MimeMessage(session); message.setFrom(new InternetAddress("your_email@example....

    java发Email和mail.jar

    也许很多 同道遇到和我一样的问题,建了个web项目,写一堆代码,结果一运行老是报错!!!上网查了查,知道了原因,修改了还是不行。...如果还没有成功,你可以给我发邮件973203075@qq.com,我可以把项目也给你!!

    java mail 用java写的发email源码

    2. **创建消息对象**:使用`Message`类创建一个邮件消息实例,设置邮件的主题、正文和发件人、收件人的地址。 ```java Message message = new MimeMessage(session); message.setFrom(new InternetAddress("your-...

    java发送email超级大封装

    本系统是一个很普通的java工程发送email的项目实例。项目的程序地址是email/src/simple.java说用包都在email/bin. 我发现网络中的关于java发送email的文章很多没有给全包,我下了三次才下全,现在我整理全了发给...

    JavaEmail发邮件

    资源是在Java代码中采用JavaEmail来实现发邮件的功能

    java-email.rar_email_email java_email客户端_java email_java mail 客户

    Java Email 是一种在Java应用程序中发送和接收电子邮件的机制,主要通过JavaMail API来实现。这个"java-email.rar"文件包含了一个完整的Java Email客户端代码示例,帮助开发者理解和实现自己的邮件功能。 JavaMail ...

    java 发送email demo

    3. **构建Message对象**:创建Message对象并设置发件人、收件人、主题和正文。 ```java MimeMessage message = new MimeMessage(session); message.setFrom(new InternetAddress("your-email@example.com")); ...

    Java发送email:spring email、微软ews

    本篇文章将深入探讨如何使用Java结合Spring框架和微软的Exchange Web Services (EWS)来发送电子邮件。 首先,让我们从Spring Email说起。Spring Framework提供了`spring-context-support`模块,其中包含了一个Email...

    java发送email邮件.

    demo介绍:http://blog.csdn.net/love_xiolan/article/details/56016576 java发送email邮件 1.发送普通email邮件 2.发送带附件的email邮件 3.邮件抄送和密送 4.发送html邮件 5.发送模板文件

    使用java实现email验证

    本教程将深入探讨如何使用Java实现邮件验证,包括发送邮件和进行邮件验证的过程。 首先,我们需要引入第三方的JavaMail API库,通常我们会使用Apache Commons Net库和JavaMail API来处理邮件相关任务。在Maven项目...

    Java邮件Email发送的jar包

    Java邮件(Email)发送是Java开发中常见的任务之一,它涉及到网络通信和协议的理解,以及相关的库使用。在Java中,我们通常使用JavaMail API来处理邮件发送功能。这个"Java邮件Email发送的jar包"包含了JavaMail API...

    用java开发Email工具之接收邮件

    用java开发Email工具之接收邮件

    java收发email算法

    在Java编程环境中,收发电子邮件是一项常见的任务,通常涉及到SMTP(Simple Mail Transfer Protocol)和POP3(Post Office Protocol version 3)协议。本教程将详细讲解如何使用Java来实现这一功能,以及涉及到的...

    JAVA实现Email客户端

    JAVA实现的Email客户端,感觉还好用,有兴趣的可以研究一下

    java发送Email(HOT本人测试过了)

    #####一起学习,共同进步###### Java发Email三种类型: 1. 纯文本的txt 2. 带有html标签的 3. 带的附件的 如有问题Q我或Email QQ:13697654 Email:jiaoer840214@163.com #####一起学习,共同进步######

    javaemail发送邮件(带附件)

    "javaemail发送邮件(带附件)" javaemail发送邮件(带附件)是使用Java技术实现的邮件发送功能,支持带附件的发送。下面是该功能的知识点总结: 1. 使用JavaMailSenderImpl类来发送邮件,需要设置SMTP服务器、用户名...

Global site tag (gtag.js) - Google Analytics