Java发送邮件
来源:互联网 发布:不规则区域的填充算法 编辑:程序博客网 时间:2024/06/06 08:55
原文地址:Send email using Java Program
如果你在Java,J2EE或者Python平台上写代码,那么发送邮件是一个基本不用考虑的需求。发送邮件可能需要发送错误警告和注册人或者登录人的确认。Java提供这样的一些功能。
Java需要三样东西来发送邮件:
- JavaMail API
- Java Activation Framework (JAF)
- SMTP服务器详情
你可以从Java官网上下载最新版本的JavaMail API和JAF。下载这两个工具后解压。把mail.jar , smtp.jar和activation.jar三个文件添加到classpath中用以发送邮件。
添加这些文件后,根据下面的步骤和Java代码发送邮件:
- 通过调用
getDefaultInstance()
建立一个新的会话对象,把属性传递给参数获取所有的重要属性,例如hostname,SMTP服务器等。 - 在上一步中通过传递会话对象建立一个MimeMessage对象。
- 最后一步就是用 javax.mail.Transport发送邮件。
// Java program to send emailimport 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 Suject"); // 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.To
添加右键到“收件人”一栏,类似地,你可以用Message.RecipientType.CC
与Message.RecipientType.BCC
添加到“抄送”和“密送”中。
上述方法中的addresses参数是一个数组,它包含了Email-IDs列表。你必须用 InternetAddress()
方法指定邮件。
假设你想给4个人发邮件。你要建立一个大小为4的字符串是数组,原来保存接收人的邮件地址。下面的代码就是利用addRecipients
发送一个简单的邮件,不是给一个人发,而是给多个人发。
// create a new String arrayString[] recipients = new String[4];// add email addressesrecipients[0] = first@gmail.comrecipients[1] = second@gmail.comrecipients[2] = third@gmail.comrecipients[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 recipientsmessage.addRecipient(Message.RecipientType.TO, new InternetAddress(recipients));
利用HTML模板发送邮件
有时候要用HTML模板发送邮件,例如,邮件的正文是用HTML写的。这可以让邮件很好格式化并显示得更吸引人。用HTML发送邮件的代码与一般邮件的发送基本是一样的。差别在于,在指定邮件正文上用的是setContent()
方法而不是setText()
方法,而且在setContent()
中我们必须指定第二个参数为“text/html”,第一个参数就是HTML代码。我们一起看一下用HTML模板发送邮件的代码:
// Java program to send email// with HTML templatesimport 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 Suject"); // 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
对象,一个赋值text,另一个赋值datahandler。发送带附件的邮件大流程大致如下:
- 建立一个会话对象
- 建立一个MimeBodyPart对象并赋值text给它。
- 建立一个MimeBodyPart对象并赋值datahandler给它。
- 建立一个MultiPart对象,并用两个MimeBodyPart给这个MultiPart赋值。
- 设MultiPart对象给
message.SetContent()
方法。 - 用
Transport()
发送邮件。
下面看一下代码:
// Java program to send email// with attachmentsimport 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 Suject"); // 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
注意:这里我们用localhost SMTP server发送邮件。如果你想用例如 Gmail, Yahoo等客户端发送邮件,那么你就得用respective SMTP server主机地址。
- [java]Java发送邮件
- java 邮件发送 --- 简单的邮件发送
- JAVA发送邮件及springboot发送邮件
- 用java发送邮件
- 用Java发送邮件
- java发送邮件源码
- java发送邮件
- Java发送邮件
- Java发送邮件程序
- java发送Email邮件
- 怎样用java发送邮件
- 利用java发送邮件
- java 邮件发送
- java邮件发送
- java邮件发送
- java定时发送邮件
- java发送邮件代码
- Java Mail 发送邮件
- linux下CJson使用
- 1007. 素数对猜想 (20)
- [Algorithm] 哈希
- 1012: Prime Number ?
- A+B Problem III -- ACM解决方法
- Java发送邮件
- 提示:手机电池切片=手机屏幕*N光点片,问题:手机能支持多久时间?
- 缓存算法(页面置换算法)
- 数据结构栈的操作
- COM技术内幕的源码笔记2.2.2
- Android JNI(二)————JNI_在java中调用C库函数(隐式建立)
- 找回QQ密码
- Python Code:图片和视频互相转换
- android面试 android知识点 基础篇