个性化阅读
专注于IT技术分析

用Java发送电子邮件

有多种使用JavaMail API发送电子邮件的方法。为此, 你必须具有负责发送邮件的SMTP服务器。

你可以使用以下技术之一来获取SMTP服务器:

  • 安装并使用任何SMTP服务器, 例如Postcast服务器, Apache James服务器, cmail服务器等。(或)
  • 使用主机提供商提供的SMTP服务器, 例如我的SMTP服务器是mail.srcmini02.com(或)
  • 使用其他公司提供的SMTP服务器, 例如gmail等

在这里, 我们将学习以上三种使用javamail API发送电子邮件的方法。但是我们应该学习从Java应用程序发送电子邮件的基本步骤。


使用JavaMail API发送电子邮件的步骤

使用JavaMail发送电子邮件有以下三个步骤。它们如下:

  1. 获取存储所有主机信息的会话对象, 例如主机名, 用户名, 密码等。
  2. 撰写邮件
  3. 发送信息


1)获取会话对象

javax.mail.Session类提供了两种获取会话对象的方法:Session.getDefaultInstance()方法和Session.getInstance()方法。你可以使用任何方法来获取会话对象。

会话课程的方法

没有。 方法 描述
1 public static Session getDefaultInstance(Properties props) 返回默认会话。
2 public static Session getDefaultInstance(Properties props, Authenticator auth) 返回默认会话。
3 public static Session getInstance(Properties props) 返回新的会话。
4 public static Session getInstance(Properties props, Authenticator auth) 返回新的会话。

getDefaultInstance()方法的示例

Properties properties=new Properties();
//fill all the information like host name etc.
Session session=Session.getDefaultInstance(properties, null);

getInstance()方法的示例

Properties properties=new Properties();
//fill all the information like host name etc.
Session session=Session.getInstance(properties, null);

2)撰写讯息

javax.mail.Message类提供了编写消息的方法。但是它是一个抽象类, 因此主要使用其子类javax.mail.internet.MimeMessage类。
要创建消息, 你需要在MimeMessage类构造函数中传递会话对象。例如:
MimeMessage message=new MimeMessage(session);
现在已经创建了消息对象, 但是在该对象中存储信息的MimeMessage类提供了许多方法。让我们看看MimeMessage类提供的方法:

MimeMessage类的常用方法

没有。 方法 描述
1 public void setFrom(Address address) 用于设置起始头字段。
2 public void addRecipient(Message.RecipientType type, Address address) 用于将给定地址添加到收件人类型。
3 public void addRecipients(Message.RecipientType type, Address[] addresses) 用于将给定地址添加到收件人类型。
4 public void setSubject(String subject) 用于设置主题标题字段。
5 public void setText(String textmessage) 用于使用文本/纯MIME类型将文本设置为邮件内容。
6 public void setContent(Object msg, String contentType) 用于使用给定的MIME类型将内容设置为邮件内容。

编写消息的示例:

MimeMessage message=new MimeMessage(session);
message.setFrom(new InternetAddress("sonoojaiswal@sssit.org"));
message.addRecipient(Message.RecipientType.To, new InternetAddress("sonoojaiswal@srcmini02.com"));
message.setHeader("Hi, everyone");
message.setText("Hi, This mail is to inform you...");

3)发送消息

javax.mail.Transport类提供了发送消息的方法。

运输类的常用方法

没有。 方法 描述
1 public static void send(Message message) 用于发送消息。
2 public static void send(Message message, Address[] address) 用于将邮件发送到给定的地址。

发送消息的示例:

Transport.send(message);

用Java发送电子邮件的简单示例

在此示例中, 我们将学习如何通过计算机上安装的SMTP服务器发送电子邮件, 例如Postcast服务器, Apache James服务器, Cmail服务器等。如果要使用主机提供商提供的SMTP服务器发送电子邮件, 请参阅此示例。
为了使用JavaMail API发送电子邮件, 你需要加载两个jar文件:mail.jar activation.jar下载这些jar文件, 或转到Oracle站点以下载最新版本。
import java.util.*;
import javax.mail.*;
import javax.mail.internet.*;
import javax.activation.*;

public class SendEmail
{
 public static void main(String [] args){
      String to = "sonoojaiswal1988@gmail.com";//change accordingly
      String from = "sonoojaiswal1987@gmail.com";change accordingly
      String host = "localhost";//or IP address

     //Get the session object
      Properties properties = System.getProperties();
      properties.setProperty("mail.smtp.host", host);
      Session session = Session.getDefaultInstance(properties);

     //compose the message
      try{
         MimeMessage message = new MimeMessage(session);
         message.setFrom(new InternetAddress(from));
         message.addRecipient(Message.RecipientType.TO, new InternetAddress(to));
         message.setSubject("Ping");
         message.setText("Hello, this is example of sending email  ");

         // Send message
         Transport.send(message);
         System.out.println("message sent successfully....");

      }catch (MessagingException mex) {mex.printStackTrace();}
   }
}

在此示例中, 我们将学习如何通过计算机上安装的SMTP服务器发送电子邮件, 例如Postcast服务器, Apache James服务器, Cmail服务器等。如果要使用主机提供商提供的SMTP服务器发送电子邮件, 请参阅此示例。

要运行此示例, 你需要加载两个jar文件。有四种加载jar文件的方法。一种方法是设置类路径。让我们看看如何运行这个例子:

加载jar文件 c:\> set classpath = mail.jar; activation.jar;。;
编译源文件 c:\> javac SendEmail.java
run by c:\> Java SendEmail

通过主机提供商提供的SMTP服务器通过Java发送电子邮件的示例

如果你使用的是主机提供商提供的SMTP服务器, 例如mail.srcmini02.com, 你需要验证用户名和密码。 javax.mail.PasswordAuthentication类用于验证密码。
如果使用JavaMail API发送电子邮件, 请加载两个jar文件:mail.jar activation.jar下载这些jar文件, 或转到Oracle站点以下载最新版本。
import java.util.Properties;
import javax.mail.*;
import javax.mail.internet.*;

public class SendMailBySite {
 public static void main(String[] args) {

  String host="mail.srcmini02.com";
  final String user="sonoojaiswal@srcmini02.com";//change accordingly
  final String password="xxxxx";//change accordingly
  
  String to="sonoojaiswal1987@gmail.com";//change accordingly

   //Get the session object
   Properties props = new Properties();
   props.put("mail.smtp.host", host);
   props.put("mail.smtp.auth", "true");
   
   Session session = Session.getDefaultInstance(props, new javax.mail.Authenticator() {
      protected PasswordAuthentication getPasswordAuthentication() {
	return new PasswordAuthentication(user, password);
      }
    });

   //Compose the message
    try {
     MimeMessage message = new MimeMessage(session);
     message.setFrom(new InternetAddress(user));
     message.addRecipient(Message.RecipientType.TO, new InternetAddress(to));
     message.setSubject("srcmini");
     message.setText("This is simple program of sending email using JavaMail API");
     
    //send the message
     Transport.send(message);

     System.out.println("message sent successfully...");
 
     } catch (MessagingException e) {e.printStackTrace();}
 }
}

如你在上面的示例中看到的, 需要对用户标识和密码进行身份验证。如该程序所示, 你可以轻松发送电子邮件。相应地更改用户名和密码。让我们看看如何通过简单的技术再次运行它:

加载jar文件 c:\> set classpath = mail.jar; activation.jar;。;
编译源文件 c:\> javac SendMailBySite.java
由……运营 c:\> Java SendMailBySite
赞(0)
未经允许不得转载:srcmini » 用Java发送电子邮件

评论 抢沙发

评论前必须登录!