有多种使用JavaMail API发送电子邮件的方法。为此, 你必须具有负责发送邮件的SMTP服务器。
你可以使用以下技术之一来获取SMTP服务器:
- 安装并使用任何SMTP服务器, 例如Postcast服务器, Apache James服务器, cmail服务器等。(或)
- 使用主机提供商提供的SMTP服务器, 例如我的SMTP服务器是mail.srcmini02.com(或)
- 使用其他公司提供的SMTP服务器, 例如gmail等
在这里, 我们将学习以上三种使用javamail API发送电子邮件的方法。但是我们应该学习从Java应用程序发送电子邮件的基本步骤。
使用JavaMail API发送电子邮件的步骤
使用JavaMail发送电子邮件有以下三个步骤。它们如下:
- 获取存储所有主机信息的会话对象, 例如主机名, 用户名, 密码等。
- 撰写邮件
- 发送信息
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 |
评论前必须登录!
注册