【用Java发送电子邮件】有多种使用JavaMail API发送电子邮件的方法。为此, 你必须具有负责发送邮件的SMTP服务器。
你可以使用以下技术之一来获取SMTP服务器:
- 安装并使用任何SMTP服务器, 例如Postcast服务器, Apache James服务器, cmail服务器等。(或)
- 使用主机提供商提供的SMTP服务器, 例如我的SMTP服务器是mail.srcmini.com(或)
- 使用其他公司提供的SMTP服务器, 例如gmail等
使用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) | 返回新的会话。 |
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类提供的方法: |
没有。 | 方法 | 描述 |
---|---|---|
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服务器, 例如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 |
推荐阅读
- 通过Gmail服务器以Java发送电子邮件
- 使用Java发送带有附件的电子邮件
- 用Java接收电子邮件
- 用Java接收带有附件的电子邮件
- 用Java转发电子邮件
- 用Java删除电子邮件
- Applet中的事件处理
- change.exe指南(它是什么、用途、错误以及如何修复它())
- 如何在Windows和Mac上打开和播放.VOB文件(分步指南)