○一个简单的文本邮件
我们的第一个例子是利用你本地的邮件服务器向"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发送电子邮件,基于提供的标题“java发email的例子”以及描述“java发email的例子,自己以前写的发送email,初学者可以直接使用”。我们将深入探讨SMTP(Simple Mail Transfer Protocol)...
4. **创建Message对象**:`Message`对象代表邮件本身,使用`MimeMessage`类创建它,并设置发件人、收件人、主题和正文。例如: ```java MimeMessage message = new MimeMessage(session); message.setFrom(new ...
3. **创建Message对象**:使用`session`创建`Message`对象,设置发件人、收件人、主题和正文。 ```java Message message = new MimeMessage(session); message.setFrom(new InternetAddress("your_email@example....
也许很多 同道遇到和我一样的问题,建了个web项目,写一堆代码,结果一运行老是报错!!!上网查了查,知道了原因,修改了还是不行。...如果还没有成功,你可以给我发邮件973203075@qq.com,我可以把项目也给你!!
2. **创建消息对象**:使用`Message`类创建一个邮件消息实例,设置邮件的主题、正文和发件人、收件人的地址。 ```java Message message = new MimeMessage(session); message.setFrom(new InternetAddress("your-...
本系统是一个很普通的java工程发送email的项目实例。项目的程序地址是email/src/simple.java说用包都在email/bin. 我发现网络中的关于java发送email的文章很多没有给全包,我下了三次才下全,现在我整理全了发给...
资源是在Java代码中采用JavaEmail来实现发邮件的功能
Java Email 是一种在Java应用程序中发送和接收电子邮件的机制,主要通过JavaMail API来实现。这个"java-email.rar"文件包含了一个完整的Java Email客户端代码示例,帮助开发者理解和实现自己的邮件功能。 JavaMail ...
3. **构建Message对象**:创建Message对象并设置发件人、收件人、主题和正文。 ```java MimeMessage message = new MimeMessage(session); message.setFrom(new InternetAddress("your-email@example.com")); ...
本篇文章将深入探讨如何使用Java结合Spring框架和微软的Exchange Web Services (EWS)来发送电子邮件。 首先,让我们从Spring Email说起。Spring Framework提供了`spring-context-support`模块,其中包含了一个Email...
demo介绍:http://blog.csdn.net/love_xiolan/article/details/56016576 java发送email邮件 1.发送普通email邮件 2.发送带附件的email邮件 3.邮件抄送和密送 4.发送html邮件 5.发送模板文件
本教程将深入探讨如何使用Java实现邮件验证,包括发送邮件和进行邮件验证的过程。 首先,我们需要引入第三方的JavaMail API库,通常我们会使用Apache Commons Net库和JavaMail API来处理邮件相关任务。在Maven项目...
Java邮件(Email)发送是Java开发中常见的任务之一,它涉及到网络通信和协议的理解,以及相关的库使用。在Java中,我们通常使用JavaMail API来处理邮件发送功能。这个"Java邮件Email发送的jar包"包含了JavaMail API...
用java开发Email工具之接收邮件
在Java编程环境中,收发电子邮件是一项常见的任务,通常涉及到SMTP(Simple Mail Transfer Protocol)和POP3(Post Office Protocol version 3)协议。本教程将详细讲解如何使用Java来实现这一功能,以及涉及到的...
JAVA实现的Email客户端,感觉还好用,有兴趣的可以研究一下
#####一起学习,共同进步###### Java发Email三种类型: 1. 纯文本的txt 2. 带有html标签的 3. 带的附件的 如有问题Q我或Email QQ:13697654 Email:jiaoer840214@163.com #####一起学习,共同进步######
"javaemail发送邮件(带附件)" javaemail发送邮件(带附件)是使用Java技术实现的邮件发送功能,支持带附件的发送。下面是该功能的知识点总结: 1. 使用JavaMailSenderImpl类来发送邮件,需要设置SMTP服务器、用户名...