网站首页 > java教程 正文
电子邮件的应用非常广泛,例如在某网站注册了一个账户,自动发送一封欢迎邮件,通过邮件找回密码,自动批量发送活动信息等。本文将简单介绍如何通过 Java 代码来创建电子邮件,并连接邮件服务器发送邮件。
1电子邮件协议
电子邮件的在网络中传输和网页一样需要遵从特定的协议,常用的电子邮件协议包括 SMTP,POP3,IMAP。其中邮件的创建和发送只需要用到 SMTP协议,所以本文也只会涉及到SMTP协议。SMTP 是 Simple Mail Transfer Protocol 的简称,即简单邮件传输协议。
2JavaMail下载
我们平时通过 Java 代码打开一个 http 网页链接时,通常可以使用已经对 http 协议封装好的 HttpURLConnection 类来快速地实现。Java 官方也提供了对电子邮件协议封装的 Java 类库,就是JavaMail,但并没有包含到标准的 JDK 中,需要我们自己去官方下载,这里我从 JavaEE 官方的 Github 仓库下载。
javaMail下载地址:http://blog.csdn.net/xietansheng/article/details/51673073
使用 JavaMail 1.6.0 要求的 JDK 版本必须是 JDK 1.7 以上,如果你本地的jdk是1.6,可以下载下面低于1.6.0的jar
3创建Java project,新建一封简单的电子邮件
首先创建一个 Java 工程,把下载好的 javax.mail.jar 作为类库加入工程。
邮件创建步骤:
创建一个邮件对象(MimeMessage);
设置发件人,收件人;
设置邮件的主题(标题);
设置邮件的正文(内容);
代码实现:
package test;
import java.util.Calendar;
import java.util.Properties;
import javax.mail.Message.RecipientType;
import javax.mail.MessagingException;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
public class SendMail {
/**
*
* @param 邮箱服务器
* @param 邮箱服务器账号
* @param 邮箱服务器密码
* @param 要发送的人邮箱
* @param 邮件主题
* @param 邮件内容
* @param 邮件类型
* @throws 邮件异常
*/
@SuppressWarnings("static-access")
public static void sendMessage(String smtpHost, String from,
String fromUserPassword, String to, String subject,
String messageText, String messageType) throws MessagingException {
// 第一步:配置javax.mail.Session对象
System.out.println("为" + smtpHost + "配置mail session对象");
Properties props = new Properties();
props.put("mail.smtp.host", smtpHost);
props.put("mail.smtp.starttls.enable", "true");// 使用 STARTTLS安全连接
props.put("mail.smtp.port", "25"); // google使用465或587端口
props.put("mail.smtp.auth", "true"); // 使用验证
// props.put("mail.debug", "true");
Session mailSession = Session.getDefaultInstance(props,
new MyAuthenticator(from, fromUserPassword));
// 第二步:编写消息
System.out.println("编写消息from——to:" + from + "——" + to);
InternetAddress fromAddress = new InternetAddress(from);
InternetAddress toAddress = new InternetAddress(to);
MimeMessage message = new MimeMessage(mailSession);
message.setFrom(fromAddress);
message.addRecipient(RecipientType.TO, toAddress);
message.setSentDate(Calendar.getInstance().getTime());
message.setSubject(subject);
message.setContent(messageText, messageType);
// 第三步:发送消息
Transport transport = mailSession.getTransport("smtp");
transport.connect(smtpHost, "chaofeng19861126", fromUserPassword);
transport.send(message, message.getRecipients(RecipientType.TO));
System.out.println("message yes");
}
public static void main(String[] args) {
try {
SendMail.sendMessage("mail.miservice.com", "mdssysmail",
"Mitacmds5202", "test@common.com.cn", "测试邮件发送",
"---------------你好,测试邮件发送-----------",
"text/html;charset=UTF-8");
} catch (MessagingException e) {
e.printStackTrace();
}
}
}
package test;
import javax.mail.Authenticator;
import javax.mail.PasswordAuthentication;
public class MyAuthenticator extends Authenticator {
String userName = "";
String password = "";
public MyAuthenticator() {
}
public MyAuthenticator(String userName, String password) {
this.userName = userName;
this.password = password;
}
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(userName, password);
}
}
4打开邮件,接收一下,看看是否能够收取到刚刚发送的邮件
请大家多多关注我的头条号,谢谢大家
猜你喜欢
- 2024-09-14 SpringBoot发送简单文本邮件(springboot 发送邮件)
- 2024-09-14 Github 大牛封装 Python 代码,实现自动发送邮件只需三行代码
- 2024-09-14 Java定时发送Email(带Excel附件)(java怎么实现定时任务)
- 2024-09-14 Spring Boot 邮件发送的 5 种姿势
- 2024-09-14 SpringBoot优雅地发送邮件(springboot发送邮件的步骤)
- 2024-09-14 Spring boot 发送邮件及原理(springboot发送outlook邮件)
- 2024-09-14 10分钟搞定Java实现邮箱验证,坦率讲,别被他人割韭菜
- 2024-09-14 25、springboot发送邮件(springboot email)
- 2024-09-14 SpringBoot邮件发送示例(springboot 邮件)
- 2024-09-14 使用spring boot 发送邮件(springboot发送outlook邮件)
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- java反编译工具 (77)
- java反射 (57)
- java接口 (61)
- java随机数 (63)
- java7下载 (59)
- java数据结构 (61)
- java 三目运算符 (65)
- java对象转map (63)
- Java继承 (69)
- java字符串替换 (60)
- 快速排序java (59)
- java并发编程 (58)
- java api文档 (60)
- centos安装java (57)
- java调用webservice接口 (61)
- java深拷贝 (61)
- 工厂模式java (59)
- java代理模式 (59)
- java.lang (57)
- java连接mysql数据库 (67)
- java重载 (68)
- java 循环语句 (66)
- java反序列化 (58)
- java时间函数 (60)
- java是值传递还是引用传递 (62)
本文暂时没有评论,来添加一个吧(●'◡'●)