使用Java程序发送电子邮件

发送电子邮件是一项基本要求,无论您使用的是JAVA、JavaEE、Python等平台。发送电子邮件可能需要发送错误警报或注册或注册确认。Java提供了通过编写Java程序发送电子邮件的功能。 要使用Java发送电子邮件,您需要三件事:

null
  • JavaMail API
  • Java激活框架(JAF)
  • 您的SMTP服务器详细信息

您可以从Java官方网站下载JavaMail API和JAF的最新版本。成功下载这两个后,将其解压缩。添加 邮政罐子 , smtp。罐子 激活。罐子 在类路径中创建文件,以便有资格发送电子邮件。 添加这些文件后,按照以下步骤编写java程序发送电子邮件:

  • 通过调用getDefaultInstance()方法并将属性作为参数传递来获取所有重要属性(如SMTP服务器的主机名等),创建一个新的会话对象。
  • 通过传递在上一步中创建的会话对象来创建mimessage对象。
  • 最后一步是使用javax发送电子邮件。邮政运输

JAVA

// Java program to send email
import java.util.*;
import javax.mail.*;
import javax.mail.internet.*;
import javax.activation.*;
import javax.mail.Session;
import javax.mail.Transport;
public class SendEmail
{
public static void main(String [] args)
{
// email ID of Recipient.
String recipient = "recipient@gmail.com" ;
// email ID of  Sender.
String sender = "sender@gmail.com" ;
// using host as localhost
String host = "127.0.0.1" ;
// Getting system properties
Properties properties = System.getProperties();
// Setting up mail server
properties.setProperty( "mail.smtp.host" , host);
// creating session object to get properties
Session session = Session.getDefaultInstance(properties);
try
{
// MimeMessage object.
MimeMessage message = new MimeMessage(session);
// Set From Field: adding senders email to from field.
message.setFrom( new InternetAddress(sender));
// Set To Field: adding recipient's email to from field.
message.addRecipient(Message.RecipientType.TO, new InternetAddress(recipient));
// Set Subject: subject of the email
message.setSubject( "This is Subject" );
// set body of the email.
message.setText( "This is a test mail" );
// Send email.
Transport.send(message);
System.out.println( "Mail successfully sent" );
}
catch (MessagingException mex)
{
mex.printStackTrace();
}
}
}


输出:

Mail successfully sent

向多个收件人发送电子邮件

向多个收件人发送电子邮件与向单个收件人发送电子邮件相同。区别在于,要向多个收件人发送邮件,您应该添加多个收件人。要添加多个收件人,我们必须调用以下方法,并将收件人类型和电子邮件地址列表作为参数传递:

void addRecipients(Message.RecipientType type, Address[] addresses)    throws MessagingException   {   }

要在“收件人”字段中添加电子邮件,您可以使用Message。RecipientType。到同样,在“抄送”和“密件抄送”字段中添加电子邮件时,您必须使用Message。RecipientType。抄送和留言。RecipientType。密件抄送。 争论 地址 在上面的方法中,是一个数组,包含所有电子邮件ID的列表。您必须使用InternetAddress()方法来指定电子邮件。 假设你想给4个人发邮件。您必须创建一个大小为4的字符串数组,并在其中存储收件人的电子邮件地址。按照上面的程序发送一封简单的电子邮件,使用addRecipients方法添加多个收件人,而不是添加单个收件人,如下所示:

JAVA

// create a new String array
String[] recipients = new String[ 4 ];
// add email addresses
recipients[ 0 ] = first @gmail .com
recipients[ 1 ] = second @gmail .com
recipients[ 2 ] = third @gmail .com
recipients[ 3 ] = fourth @gmail .com
// inside of try block instead of using addRecipient()
// use addRecipients()
// specify the type of field(TO, CC ,BCC)
// pass the array of email ids of recipients
message.addRecipient(Message.RecipientType.TO, new InternetAddress(recipients));


使用HTML模板发送电子邮件

有时电子邮件是用HTML模板发送的,即电子邮件的正文是用HTML编写的。这使得电子邮件格式良好,外观美观。使用HTML模板发送电子邮件的程序与发送普通电子邮件的程序几乎相同。区别在于,我们必须使用 setContent() 方法而不是 setText() 方法中指定电子邮件正文和 setContent() 我们必须将第二个参数指定为“text/html”,第一个参数将是html代码。现在让我们来看一下使用HTML模板发送电子邮件的程序:

JAVA

// Java program to send email
// with HTML templates
import java.util.*;
import javax.mail.*;
import javax.mail.internet.*;
import javax.activation.*;
import javax.mail.Session;
import javax.mail.Transport;
public class SendEmail
{
public static void main(String [] args)
{
// email ID of Recipient.
String recipient = "recipient@gmail.com" ;
// email ID of  Sender.
String sender = "sender@gmail.com" ;
// using host as localhost
String host = "127.0.0.1" ;
// Getting system properties
Properties properties = System.getProperties();
// Setting up mail server
properties.setProperty( "mail.smtp.host" , host);
// creating session object to get properties
Session session = Session.getDefaultInstance(properties);
try
{
// MimeMessage object.
MimeMessage message = new MimeMessage(session);
// Set From Field: adding senders email to from field.
message.setFrom( new InternetAddress(sender));
// Set To Field: adding recipient's email to from field.
message.addRecipient(Message.RecipientType.TO, new InternetAddress(recipient));
// Set Subject: subject of the email
message.setSubject( "This is Subject" );
// set body of the email.
message.setContent( "<h1>This is a HTML text</h1>" , "text/html" );
// Send email.
Transport.send(message);
System.out.println( "Mail successfully sent" );
}
catch (MessagingException mex)
{
mex.printStackTrace();
}
}
}


输出:

Mail successfully sent

发送带有附件的电子邮件

JavaMail API允许您发送包含附件的电子邮件。要发送带有附件的电子邮件,我们必须创建两个MimeBodyPart对象,并将文本分配给一个对象,将datahandler分配给另一个对象。下面简要介绍了发送带有附件的电子邮件的过程:

  • 创建一个新的会话对象
  • 创建MimeBodyPart对象并为其指定文本
  • 创建一个新的MimeBodyPart对象,并将DataHandler对象分配给它
  • 创建一个多部分对象,并将两个MimeBodyPart对象指定给该多部分对象
  • 将此多部分对象设置为消息。SetContent()方法。
  • 使用Transport()方法发送邮件

现在让我们来看一下实现这一点的程序:

CPP

// Java program to send email
// with attachments
import java.util.*;
import javax.mail.*;
import javax.mail.internet.*;
import javax.activation.*;
import javax.mail.Session;
import javax.mail.Transport;
public class SendEmail
{
public static void main(String [] args)
{
// email ID of Recipient.
String recipient = "recipient@gmail.com" ;
// email ID of Sender.
String sender = "sender@gmail.com" ;
// using host as localhost
String host = "127.0.0.1" ;
// Getting system properties
Properties properties = System.getProperties();
// Setting up mail server
properties.setProperty( "mail.smtp.host" , host);
// creating session object to get properties
Session session = Session.getDefaultInstance(properties);
try
{
// MimeMessage object.
MimeMessage message = new MimeMessage(session);
// Set From Field: adding senders email to from field.
message.setFrom( new InternetAddress(sender));
// Set To Field: adding recipient's email to from field.
message.addRecipient(Message.RecipientType.TO, new InternetAddress(recipient));
// Set Subject: subject of the email
message.setSubject( "This is Subject" );
// creating first MimeBodyPart object
BodyPart messageBodyPart1 = new MimeBodyPart();
messageBodyPart1.setText( "This is body of the mail" );
// creating second MimeBodyPart object
BodyPart messageBodyPart2 = new MimeBodyPart();
String filename = "attachment.txt"
DataSource source = new FileDataSource(filename);
messageBodyPart2.setDataHandler( new DataHandler(source));
messageBodyPart2.setFileName(filename);
// creating MultiPart object
Multipart multipartObject = new MimeMultipart();
multipartObject.addBodyPart(messageBodyPart1);
multipartObject.addBodyPart(messageBodyPart2);
// set body of the email.
message.setContent(multipartObject);
// Send email.
Transport.send(message);
System.out.println( "Mail successfully sent" );
}
catch (MessagingException mex)
{
mex.printStackTrace();
}
}
}


输出:

Mail successfully sent

笔记 :这里我们使用本地主机SMTP服务器发送电子邮件。如果你想使用任何电子邮件发送客户端,如Gmail、Yahoo等,那么你必须使用各自的SMTP服务器主机地址。 本文由 严酷的阿加瓦尔 .如果你喜欢GeekSforgek,并想贡献自己的力量,你也可以使用 写极客。组织 或者把你的文章寄去评论-team@geeksforgeeks.org.看到你的文章出现在Geeksforgeks主页上,并帮助其他极客。 如果您发现任何不正确的地方,或者您想分享有关上述主题的更多信息,请写下评论。

© 版权声明
THE END
喜欢就支持一下吧
点赞6 分享