发送电子邮件是一项基本要求,无论您使用的是JAVA、JavaEE、Python等平台。发送电子邮件可能需要发送错误警报或注册或注册确认。Java提供了通过编写Java程序发送电子邮件的功能。 要使用Java发送电子邮件,您需要三件事:
- 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主页上,并帮助其他极客。 如果您发现任何不正确的地方,或者您想分享有关上述主题的更多信息,请写下评论。