专注Java教育14年 全国咨询/投诉热线:444-1124-454
赢咖4LOGO图
始于2009,口口相传的Java黄埔军校
首页 学习攻略 Java学习 使用Java发送电子邮件

使用Java发送电子邮件

更新时间:2022-11-18 14:29:17 来源:赢咖4 浏览1569次

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

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

安装和使用任何 SMTP 服务器,例如 Postcast 服务器、Apache James 服务器、cmail 服务器等(或)

使用主机提供商提供的 SMTP 服务器,例如我的 SMTP 服务器是 mail.javatpoint.com(或)

使用其他公司提供的 SMTP 服务器,例如 gmail 等。

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

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

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

获取存储主机所有信息的会话对象,如主机名、用户名、密码等。

撰写邮件

发送信息

1.获取会话对象

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

Session类的方法

  方法 描述
1个 public static Session getDefaultInstance(属性道具) 返回默认会话。
2个 public static Session getDefaultInstance(Properties props,Authenticator auth) 返回默认会话。
3个 public static Session getInstance(属性道具) 返回新会话。
4个 public static Session getInstance(Properties props,Authenticator auth) 返回新会话。

getDefaultInstance() 方法示例

属性 properties= new  Properties();  
//填写主机名等所有信息  
会话 session=Session.getDefaultInstance(properties, null );  

getInstance() 方法示例

属性 properties= new  Properties();  
//填写主机名等所有信息  
会话 session=Session.getInstance(properties, null );  

2.撰写消息

javax.mail.Message 类提供了编写消息的方法。但它是一个抽象类,所以它的子类 javax.mail.internet.MimeMessage 类最常被使用。

要创建消息,您需要在 MimeMessage 类构造函数中传递会话对象。例如:

MimeMessage 消息 = new  MimeMessage(session);  

现在消息对象已经创建,但是要在这个对象中存储信息,MimeMessage 类提供了很多方法。让我们看看 MimeMessage 类提供的方法:

MimeMessage类常用方法

  方法 描述
1个 public void setFrom(地址地址) 用于设置 from 标头字段。
2个 public void addRecipient(Message.RecipientType类型, Address地址) 用于将给定地址添加到收件人类型。
3个 public void addRecipients(Message.RecipientType 类型,Address[] 地址) 用于将给定地址添加到收件人类型。
4个 public void setSubject(字符串主题) 用于设置主题标题字段。
5个 public void setText(字符串文本消息) 用于使用 text/plain MIME 类型将文本设置为消息内容。
6个 public void setContent(Object msg, String contentType) 用于使用给定的 MIME 类型将内容设置为消息内容。

撰写消息的示例:

MimeMessage 消息 = new  MimeMessage(session);  
message.setFrom( new  InternetAddress( "[email protected]" ));  
message.addRecipient(Message.RecipientType.To,   
新的 互联网地址(“[email protected]” ));  
message.setHeader( "大家好" );  
message.setText( "您好,这封邮件是为了通知您..." );  

3.发送消息

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

Transport类的常用方法

  方法 描述
1个 公共静态无效发送(消息消息) 用于发送消息。
2个 public static void send(Message message, Address[] address) 用于将消息发送到给定的地址。

发送消息的示例:

传输。发送(消息);  

Java发送邮件的简单例子

在这个例子中,我们将学习如何通过机器上安装的 SMTP 服务器发送电子邮件,例如 Postcast 服务器、Apache James 服务器、Cmail 服务器等。如果您想使用主机提供商提供的 SMTP 服务器发送电子邮件,请参阅这个之后的例子。

要使用 JavaMail API 发送电子邮件,您需要加载两个 jar 文件:

邮件.jar

激活.jar

下载这些 jar 文件或到 Oracle 站点下载最新版本。

导入 java.util.*;  
导入 javax.mail.*;  
导入 javax.mail.internet.*;  
导入 javax.activation.*;   
公开课 发送邮件   
{  
 public static void  main(String [] args){    
      字符串 =  "[email protected]" ; //相应地改变  
      String from =  "[email protected]" ;相应地改变  
      字符串主机=  “本地主机” ;//或IP地址    
     //获取会话对象  
      属性 properties = System.getProperties();  
      properties.setProperty( "mail.smtp.host" , host);  
      Session session = Session.getDefaultInstance(属性);    
     //编写消息  
      尝试{  
         MimeMessage 消息 =  new  MimeMessage(session);  
         message.setFrom( new  InternetAddress(from));  
         message.addRecipient(Message.RecipientType.TO, new  InternetAddress(to));  
         message.setSubject( "平" );  
         message.setText( "您好,这是发送邮件的例子" );    
         // 发信息  
         传输。发送(消息);  
         System.out.println( "消息发送成功...." );    
      } catch  (MessagingException mex) {mex.printStackTrace();}  
   }  
}  

在这个例子中,我们将学习如何通过机器上安装的 SMTP 服务器发送电子邮件,例如 Postcast 服务器、Apache James 服务器、Cmail 服务器等。如果您想使用主机提供商提供的 SMTP 服务器发送电子邮件,请参阅这个之后的例子。

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

加载 jar 文件 c:\> set classpath=mail.jar;activation.jar;.;
编译源文件 c:\> javac SendEmail.java
由......运营 c:\> java 发送电子邮件

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

如果您使用主机提供商提供的 SMTP 服务器,例如 mail.javatpoint.com,您需要验证用户名和密码。javax.mail.PasswordAuthentication 类用于验证密码。

如果您使用 JavaMail API 发送电子邮件,请加载两个 jar 文件:

邮件.jar

激活.jar

下载这些 jar 文件或到 Oracle 站点下载最新版本。

导入 java.util.Properties;  
导入 javax.mail.*;  
导入 javax.mail.internet.*;    
公共类 SendMailBySite {   
 public static void  main(String[] args) {      
  String host= "mail.javatpoint.com" ;  
  final  String user= "[email protected]" ; //相应地改变  
  最终 字符串密码= “xxxxx” ;//相应地改变      
  字符串= “[email protected]” ;//相应地改变    
   //获取会话对象  
   属性 props =  new  Properties();  
   props.put( "mail.smtp.host" ,host);  
   props.put( "mail.smtp.auth" ,  "true" );       
   Session session = Session.getDefaultInstance(props,  
    新的 javax.mail.Authenticator() {  
      受保护 的 PasswordAuthentication getPasswordAuthentication() {  
    返回新的 PasswordAuthentication(用户,密码);   
      }  
    });    
   //编写消息  
    尝试 {  
     MimeMessage 消息 =  new  MimeMessage(session);  
     message.setFrom(新的 互联网地址(用户));  
     message.addRecipient(Message.RecipientType.TO, new  InternetAddress(to));  
     message.setSubject( "javatpoint" );  
     message.setText( "这是一个使用 JavaMail API 发送电子邮件的简单程序" );         
    //发送消息  
     传输。发送(消息);    
     System.out.println( "消息发送成功..." );     
     }  catch  (MessagingException e) {e.printStackTrace();}  
 }  
}  

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

加载 jar 文件 c:\> set classpath=mail.jar;activation.jar;.;
编译源文件 c:\> javac SendMailBySite.java
由......运营 c:\> java SendMailBySite

 

提交申请后,顾问老师会电话与您沟通安排学习

免费课程推荐 >>
技术文档推荐 >>