使用Java应用程序发送电子邮件非常简单,但是从一开始,您应该在计算机上安装JavaMail API和Java激活框架(JAF)。
您可以从Java的标准网站下载最新版本的JavaMail(1.2版)。
您可以从Java的标准网站下载最新版本的JAF(版本1.1.1)。
下载并解压缩这些文件,在新创建的顶级目录中,您将找到两个应用程序的大量jar文件。您需要在CLASSPATH中添加mail.jar和activation.jar文件。
这是从您的计算机发送简单电子邮件的示例。假定您的本地主机已连接到Internet,并且足以发送电子邮件。
//文件名SendEmail.java- import java.util.*; import javax.mail.*; import javax.mail.internet.*; import javax.activation.*; public class SendEmail { public static void main(String [] args) { //需要提及收件人的电子邮件ID。 String to = "abcd@gmail.com"; //需要提及发件人的电子邮件ID- String from = "web@gmail.com"; //假设您正在从本地主机发送电子邮件 String host = "localhost"; //获取系统属性 Properties properties = System.getProperties(); //设置邮件服务器 properties.setProperty("mail.smtp.host", host); //获取默认的Session对象。 Session session = Session.getDefaultInstance(properties); try { //创建一个默认的MimeMessage对象。 MimeMessage message = new MimeMessage(session); //Set From:标题的标头字段。 message.setFrom(new InternetAddress(from)); //设置为:标头的标头字段。 message.addRecipient(Message.RecipientType.TO, new InternetAddress(to)); //设置主题:标题字段 message.setSubject("This is the Subject Line!"); //现在设置实际消息 message.setText("This is actual message"); //发送信息 Transport.send(message); System.out.println("Sent message successfully...."); } catch (MessagingException mex) { mex.printStackTrace(); } } }
编译并运行该程序以发送简单的电子邮件-
输出结果
$ java SendEmail Sent message successfully....
如果要将电子邮件发送给多个收件人,则可以使用以下方法指定多个电子邮件ID-
void addRecipients(Message.RecipientType type, Address[] addresses) throws MessagingException
这是参数的描述-
类型-将其设置为TO,CC或BCC。此处CC代表复本,BCC代表黑碳复本。示例:Message.RecipientType.TO
地址-这是电子邮件ID的数组。InternetAddress()
指定电子邮件ID时,您需要使用方法。
这是从您的计算机发送HTML电子邮件的示例。此处假定您的本地主机已连接到Internet,并且足以发送电子邮件。
此示例与上一个示例非常相似,不同之处在于,这里我们使用setContent()
方法设置第二个参数为“ text / html”的内容以指定HTML内容包含在消息中。
使用此示例,您可以发送尽可能多的HTML内容。
//文件名SendHTMLEmail.java- import java.util.*; import javax.mail.*; import javax.mail.internet.*; import javax.activation.*; public class SendHTMLEmail { public static void main(String [] args) { //需要提及收件人的电子邮件ID。 String to = "abcd@gmail.com"; //需要提及发件人的电子邮件ID- String from = "web@gmail.com"; //假设您正在从本地主机发送电子邮件 String host = "localhost"; //获取系统属性 Properties properties = System.getProperties(); //设置邮件服务器 properties.setProperty("mail.smtp.host", host); //获取默认的Session对象。 Session session = Session.getDefaultInstance(properties); try { //创建一个默认的MimeMessage对象。 MimeMessage message = new MimeMessage(session); //Set From:标题的标头字段。 message.setFrom(new InternetAddress(from)); //设置为:标头的标头字段。 message.addRecipient(Message.RecipientType.TO, new InternetAddress(to)); //设置主题:标题字段 message.setSubject("This is the Subject Line!"); //发送尽可能大的实际HTML消息 message.setContent("<h1>This is actual message</h1>", "text/html"); //发送信息 Transport.send(message); System.out.println("Sent message successfully...."); } catch (MessagingException mex) { mex.printStackTrace(); } } }
编译并运行该程序以发送HTML电子邮件-
输出结果
$ java SendHTMLEmail Sent message successfully....
这是从您的机器发送带有附件的电子邮件的示例。在此假定您的本地主机已连接到Internet,并且足以发送电子邮件。
//文件名SendFileEmail.java- import java.util.*; import javax.mail.*; import javax.mail.internet.*; import javax.activation.*; public class SendFileEmail { public static void main(String [] args) { //需要提及收件人的电子邮件ID。 String to = "abcd@gmail.com"; //需要提及发件人的电子邮件ID- String from = "web@gmail.com"; //假设您正在从本地主机发送电子邮件 String host = "localhost"; //获取系统属性 Properties properties = System.getProperties(); //设置邮件服务器 properties.setProperty("mail.smtp.host", host); //获取默认的Session对象。 Session session = Session.getDefaultInstance(properties); try { //创建一个默认的MimeMessage对象。 MimeMessage message = new MimeMessage(session); //Set From:标题的标头字段。 message.setFrom(new InternetAddress(from)); //设置为:标头的标头字段。 message.addRecipient(Message.RecipientType.TO,new InternetAddress(to)); //设置主题:标题字段 message.setSubject("This is the Subject Line!"); //创建消息部分 BodyPart messageBodyPart = new MimeBodyPart(); //填写信息 messageBodyPart.setText("This is message body"); //创建一条multipar消息 Multipart multipart = new MimeMultipart(); //设置短信部分 multipart.addBodyPart(messageBodyPart); //第二部分是附件 messageBodyPart = new MimeBodyPart(); String filename = "file.txt"; DataSource source = new FileDataSource(filename); messageBodyPart.setDataHandler(new DataHandler(source)); messageBodyPart.setFileName(filename); multipart.addBodyPart(messageBodyPart); //发送完整的消息部分 message.setContent(multipart ); //发送信息 Transport.send(message); System.out.println("Sent message successfully...."); } catch (MessagingException mex) { mex.printStackTrace(); } } }
编译并运行该程序以发送HTML电子邮件-
输出结果
$ java SendFileEmail Sent message successfully....
如果需要将用户标识和密码提供给电子邮件服务器以进行身份验证,则可以如下设置这些属性:
props.setProperty("mail.user", "myuser"); props.setProperty("mail.password", "mypwd");
其余的电子邮件发送机制将保持如上 。