- java数组入门教程
- java数组的遍历
- 基于debian(ubuntu)的JDK安装与卸载-vps环境搭建实录(一)
- java环境变量配置(windows7系统)
- java开发环境配置
- 第一个java程序 helloword
- 使用eclipse快速开发java程序
- Java基础语法
- Java对象和类
- Java基本数据类型
- Java变量类型
- Java修饰符
- Java运算符
- Java循环结构 – for, while 及 do…while
- Java分支结构 – if…else/switch
- Java Number类
- Java Character类
- Java String类
- Java日期时间
- java异常处理分类
- java Exception异常处理实例
- java.util.UUID 工具类详解
- java数字格式化类DecimalFormat详解
- JDBC系列教程之一:jdbc简单介绍
- JDBC系列教程之二:jdbc连接数据的步骤
- JDBC系列教程之三:JDBC基本的CRUD(创建、读取、更新、删除)
- JDBC系列教程之四:SQL注入PreparedStatement和Statement
- JDBC系列教程之五:数据类型
- JDBC系列教程之六:一个简单用户相关的数据访问层
- JDBC系列教程之七:用配置文件(properties)和反射实现与具体类的耦合
- JDBC系列教程之八:事务-ACID
- JDBC系列教程之九:事务-SavePoint与JTA
- JDBC系列教程之十:隔离级别
- JDBC系列教程之十一:其他的几个API
- JDBC系列教程之十二:DatabaseMetaData(数据库的元数据信息)和ParameterMetaData(参数的元数据信息)
- JDBC系列教程之十三:ResultSetMetaData
- JDBC系列教程之十四:用反射ResultSetMetaData将查询结果读入对象中
- JDBC系列教程之十五:数据源和连接池
- Java 继承
- Java 重写(Override)与重载(Overload)
- Java 多态
- Java 抽象类
- java 封装
- Java 接口
- Java 包(package)
- Java 数据结构
- Java 集合框架
- Java 泛型
- Java序列化
- Java 网络编程
- Java 发送邮件
- Java 多线程编程
- Java Applet基础
- Java 文档注释
知识点
相关文章
更多最近更新
更多Java 发送邮件
2019-03-28 22:38|来源: 网络
Java 发送邮件
使用Java应用程序发送E-mail十分简单,但是首先你应该在你的机器上安装JavaMail API 和Java Activation Framework (JAF) 。
你可以在 JavaMail (Version 1.2) 下载最新的版本。
你可以再 在JAF (Version 1.1.1)下载最新的版本。
下载并解压这些文件,最上层文件夹你会发现很多的jar文件。你需要将mail.jar和activation.jar 添加到你的CLASSPATH中。
发送一封简单的 E-mail
下面是一个发送简单E-mail的例子。假设你的localhost已经连接到网络。
// 文件名 SendEmail.java import java.util.*; import javax.mail.*; import javax.mail.internet.*; import javax.activation.*; public class SendEmail { public static void main(String [] args) { // 收件人电子邮箱 String to = "abcd@gmail.com"; // 发件人电子邮箱 String from = "web@gmail.com"; // 指定发送邮件的主机为 localhost String host = "localhost"; // 获取系统属性 Properties properties = System.getProperties(); // 设置邮件服务器 properties.setProperty("mail.smtp.host", host); // 获取默认session对象 Session session = Session.getDefaultInstance(properties); try{ // 创建默认的 MimeMessage 对象 MimeMessage message = new MimeMessage(session); // Set From: 头部头字段 message.setFrom(new InternetAddress(from)); // Set To: 头部头字段 message.addRecipient(Message.RecipientType.TO, new InternetAddress(to)); // Set Subject: 头部头字段 message.setSubject("This is the Subject Line!"); // 设置消息体 message.setText("This is actual message"); // 发送消息 Transport.send(message); System.out.println("Sent message successfully...."); }catch (MessagingException mex) { mex.printStackTrace(); } } }
编译并运行这个程序来发送一封简单的E-mail:
$ java SendEmail Sent message successfully....
如果你想发送一封e-mail给多个收件人,那么使用下面的方法来指定多个收件人ID:
void addRecipients(Message.RecipientType type, Address[] addresses) throws MessagingException
下面是对于参数的描述:
type:要被设置为TO, CC 或者BCC. 这里CC 代表抄送、BCC 代表秘密抄送y. 举例:Message.RecipientType.TO
addresses: 这是email ID的数组。在指定电子邮件ID时,你将需要使用InternetAddress()方法。
发送一封HTML E-mail
下面是一个发送HTML E-mail的例子。假设你的localhost已经连接到网络。
和上一个例子很相似,除了我们要使用setContent()方法来通过第二个参数为"text/html",来设置内容来指定要发送HTML内容。
// 文件名 SendHTMLEmail.java import java.util.*; import javax.mail.*; import javax.mail.internet.*; import javax.activation.*; public class SendHTMLEmail { public static void main(String [] args) { // 收件人电子邮箱 String to = "abcd@gmail.com"; // 发件人电子邮箱 String from = "web@gmail.com"; // 指定发送邮件的主机为 localhost String host = "localhost"; // 获取系统属性 Properties properties = System.getProperties(); // 设置邮件服务器 properties.setProperty("mail.smtp.host", host); // 获取默认的 Session 对象。 Session session = Session.getDefaultInstance(properties); try{ // 创建默认的 MimeMessage 对象。 MimeMessage message = new MimeMessage(session); // Set From: 头部头字段 message.setFrom(new InternetAddress(from)); // Set To: 头部头字段 message.addRecipient(Message.RecipientType.TO, new InternetAddress(to)); // Set Subject: 头字段 message.setSubject("This is the Subject Line!"); // 发送 HTML 消息, 可以插入html标签 message.setContent("This is actual message
", "text/html" ); // 发送消息 Transport.send(message); System.out.println("Sent message successfully...."); }catch (MessagingException mex) { mex.printStackTrace(); } } }
编译并运行此程序来发送HTML e-mail:
$ java SendHTMLEmail Sent message successfully....
发送带有附件的 E-mail
下面是一个发送带有附件的 E-mail的例子。假设你的localhost已经连接到网络。
// 文件名 SendFileEmail.java import java.util.*; import javax.mail.*; import javax.mail.internet.*; import javax.activation.*; public class SendFileEmail { public static void main(String [] args) { // 收件人电子邮箱 String to = "abcd@gmail.com"; // 发件人电子邮箱 String from = "web@gmail.com"; // 指定发送邮件的主机为 localhost String host = "localhost"; // 获取系统属性 Properties properties = System.getProperties(); // 设置邮件服务器 properties.setProperty("mail.smtp.host", host); // 获取默认的 Session 对象。 Session session = Session.getDefaultInstance(properties); try{ // 创建默认的 MimeMessage 对象。 MimeMessage message = new MimeMessage(session); // Set From: 头部头字段 message.setFrom(new InternetAddress(from)); // Set To: 头部头字段 message.addRecipient(Message.RecipientType.TO, new InternetAddress(to)); // Set Subject: 头字段 message.setSubject("This is the Subject Line!"); // 创建消息部分 BodyPart messageBodyPart = new MimeBodyPart(); // 消息 messageBodyPart.setText("This is message body"); // 创建多重消息 Multipart multipart = new MimeMultipart(); // 设置文本消息部分 multipart.addBodyPart(messageBodyPart); // 附件部分 messageBodyPart = new MimeBodyPart(); String filename = "file.txt"; DataSource source = new FileDataSource(filename); messageBodyPart.setDataHandler(new DataHandler(source)); messageBodyPart.setFileName(filename); multipart.addBodyPart(messageBodyPart); // 发送完整消息 message.setContent(multipart ); // 发送消息 Transport.send(message); System.out.println("Sent message successfully...."); }catch (MessagingException mex) { mex.printStackTrace(); } } }
编译并运行你的程序来发送一封带有附件的邮件。
$ java SendFileEmail Sent message successfully....
用户认证部分
如果需要提供用户名和密码给e-mail服务器来达到用户认证的目的,你可以通过如下设置来完成:
props.setProperty("mail.user", "myuser"); props.setProperty("mail.password", "mypwd");
e-mail其他的发送机制和上述保持一致。
相关问答
更多-
java 当数据库数据发生变化时自动发送邮件[2022-08-07]
搜索 spring quartz ,配置成功后,执行过程的代码与一般方法没有区别 -
使用Spring发送邮件报错[2022-12-18]
在属性文件中添加一句话试试:下面是个例子 Properties props = System.getProperties(); props.put("mail.smtp.starttls.enable", "true");//新增这句话试试 -
Java怎么直接发送邮件,而不通过页面或者outlook软件.[2022-11-11]
1 必须编写邮件客户端程序,请使用javamail包 2 编写一个页面,触发一个事件,讲发送的内容传递给后台的邮件客户端程序,即可完成你的要求 3 你不会是要求我们替你写个程序吧??? 祝你好运! -
在EWS Java API中查找邮件是否成功发送(Finding out if the mail was sent successfully or not in EWS Java API)[2022-02-20]
在EmailMessage类中,请在发送邮件之前使用方法setIsDeliveryReceiptRequested并将其设置为true 。 一旦发送邮件并且邮件服务器已将邮件发送给收件人,您将收到收件人收到邮件时的消息(如果消息收发服务器支持)。 /** * Sets the checks if is delivery receipt requested. * * @param value the new checks if is delivery receipt requested ... -
通过Java API发送邮件:即使附件失败,如何发送邮件?(Sending mail via Java API: How to send the mail even if attachment fails?)[2022-07-08]
是。 我希望能够做到(伪代码跟随) try { // set up standard message try { // perform attachment } catch { // perhaps amend your original message to indicate attachment failed } send(); } catch { // handle a complete failure here... } 虽然我会专注于附 ... -
发送邮件的问题?(Issue to send mail?)[2022-09-08]
我得到了答案,它只是端口号是问题,我改变并使用这两个端口号25(或)587。 i got the answer,it's nothing but the port numbers is problem, I'm change and use this two port number 25 (or) 587. -
您可以使用Android的Intent系统在手机上启动本机电子邮件客户端。 您可以预填充字段。 发送电子邮件需要用户干预。 代码将类似于: Intent email = new Intent(Intent.ACTION_SEND); email.putExtra(Intent.EXTRA_EMAIL, recipients); email.putExtra(Intent.EXTRA_TEXT, "First Email from Android"); email.putExtr ...
-
从java发送邮件(Sending mail from java)[2023-07-29]
不要忘记发送邮件的Jakarta Commons Email 。 它有一个非常容易使用的API。 Don't forget Jakarta Commons Email for sending mail. It has a very easy to use API. -
您应该使用调度程序来触发邮件发送事件。 看看石英它是一个很好的调度程序。 You should use a scheduler to trigger the event for a mail send. Have a look at quartz its a good scheduler.
-
通过Java发送邮件(sending mail through Java)[2022-10-12]
从日志条目 Mar 28 20:13:16 postfix/smtpd[10120]: fatal: no SASL authentication mechanisms 我怀疑问题出在Postfix上,其中我不是专家。 谷歌搜索“致命:没有SASL认证机制”提供了许多有趣的链接:可能看看这里或这里 。 From the log entry Mar 28 20:13:16 postfix/smtpd[10120]: fatal: no SASL authentication mechanisms I su ...