用Java发送电子邮件

【用Java发送电子邮件】有多种使用JavaMail API发送电子邮件的方法。为此, 你必须具有负责发送邮件的SMTP服务器。
你可以使用以下技术之一来获取SMTP服务器:

  • 安装并使用任何SMTP服务器, 例如Postcast服务器, Apache James服务器, cmail服务器等。(或)
  • 使用主机提供商提供的SMTP服务器, 例如我的SMTP服务器是mail.srcmini.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@srcmini.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.srcmini.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.srcmini.com"; final String user="sonoojaiswal@srcmini.com"; //change accordingly final String password="xxxxx"; //change accordinglyString 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

    推荐阅读