mail java mail_使用 JavaMail 实现邮件发送与收取
发布日期:2022-02-03 13:17:06 浏览次数:8 分类:技术文章

本文共 3595 字,大约阅读时间需要 11 分钟。

已使用 163 邮箱测试通过,且支持 SSL 连接。

发送邮件

示例:Jack 发送一封邮件给 Rose。

public class SendMail {

public static void main(String[] args) {

boolean isSSL = true;

String host = "smtp.163.com";

int port = 465;

String from = "jack@163.com";

String to = "rose@163.com";

boolean isAuth = true;

final String username = "jack@163.com";

final String password = "jack";

Properties props = new Properties();

props.put("mail.smtp.ssl.enable", isSSL);

props.put("mail.smtp.host", host);

props.put("mail.smtp.port", port);

props.put("mail.smtp.auth", isAuth);

Session session = Session.getDefaultInstance(props, new Authenticator() {

@Override

protected PasswordAuthentication getPasswordAuthentication() {

return new PasswordAuthentication(username, password);

}

});

try {

Message message = new MimeMessage(session);

message.setFrom(new InternetAddress(from));

message.addRecipient(Message.RecipientType.TO, new InternetAddress(to));

message.setSubject("主题");

message.setText("内容");

Transport.send(message);

} catch (AddressException e) {

e.printStackTrace();

} catch (MessagingException e) {

e.printStackTrace();

}

System.out.println("发送完毕!");

}

}

收取邮件

示例:Rose 收取最近一封邮件。

import java.util.Date;

import java.util.Properties;

import javax.mail.Folder;

import javax.mail.Message;

import javax.mail.MessagingException;

import javax.mail.NoSuchProviderException;

import javax.mail.Session;

import javax.mail.Store;

public class FetchMail {

public static void main(String[] args) {

String protocol = "pop3";

boolean isSSL = true;

String host = "pop.163.com";

int port = 995;

String username = "rose@163.com";

String password = "rose";

Properties props = new Properties();

props.put("mail.pop3.ssl.enable", isSSL);

props.put("mail.pop3.host", host);

props.put("mail.pop3.port", port);

Session session = Session.getDefaultInstance(props);

Store store = null;

Folder folder = null;

try {

store = session.getStore(protocol);

store.connect(username, password);

folder = store.getFolder("INBOX");

folder.open(Folder.READ_ONLY);

int size = folder.getMessageCount();

Message message = folder.getMessage(size);

String from = message.getFrom()[0].toString();

String subject = message.getSubject();

Date date = message.getSentDate();

System.out.println("From: " + from);

System.out.println("Subject: " + subject);

System.out.println("Date: " + date);

} catch (NoSuchProviderException e) {

e.printStackTrace();

} catch (MessagingException e) {

e.printStackTrace();

} finally {

try {

if (folder != null) {

folder.close(false);

}

if (store != null) {

store.close();

}

} catch (MessagingException e) {

e.printStackTrace();

}

}

System.out.println("接收完毕!");

}

}

常用邮件协议

发送邮件:SMTP

收取邮件:POP3、IMAP

常用邮件配置项

配置项

说明

mail.xxx.ssl.enable

是否支持 SSL 连接

mail.xxx.host

邮件服务器主机名

mail.xxx.port

邮件服务器端口号

mail.xxx.auth

是否进行身份认证

说明:xxx 表示协议名称,例如:smtp、pop3 等。

默认端口号

SMTP

POP3

IMAP

普通方式

25

110

143

SSL 方式

465

995

993

使用 Apache Commons Email 发送邮件

import org.apache.commons.mail.Email;

import org.apache.commons.mail.EmailException;

import org.apache.commons.mail.SimpleEmail;

public class SendMail {

public static void main(String[] args) {

boolean isSSL = true;

String host = "smtp.163.com";

int port = 465;

String from = "jack@163.com";

String to = "rose@163.com";

String username = "jack@163.com";

String password = "jack";

try {

Email email = new SimpleEmail();

email.setSSLOnConnect(isSSL);

email.setHostName(host);

email.setSmtpPort(port);

email.setAuthentication(username, password);

email.setFrom(from);

email.addTo(to);

email.setSubject("主题");

email.setMsg("内容");

email.send();

} catch (EmailException e) {

e.printStackTrace();

}

System.out.println("发送完毕!");

}

}

转载地址:https://blog.csdn.net/weixin_34759094/article/details/114409597 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:thread java_Java Thread 总结
下一篇:linux mysql安装失败 lib冲突问题_Linux安装遇到的问题

发表评论

最新留言

留言是一种美德,欢迎回访!
[***.207.175.100]2024年03月03日 20时01分15秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章

vscode 不能使用中文输入法_vscode中vim插件设置 2019-04-21
当集合a为空集时a的取值范围_1.1.2 集合间的基本关系 2019-04-21
vue 可合并表格组件_Vue实战046:详解Mixins混入使用和注意事项 2019-04-21
python包怎么做双重差分did分析_多变量相关性分析(一个因变量与多个自变量) 2019-04-21
fi sap 凭证冲销 稅_SAP中的成本要素 2019-04-21
mysql幻读是什么意思_MySQL中的幻读,你真的理解吗? 2019-04-21
mysql执行计划中性能最差的是_MySQL性能优化(七):MySQL执行计划,真的很重要,来一起学习吧... 2019-04-21
易语言执行mysql命令_易语言通过“打开”命令操作数据库 2019-04-21
mysql slave 1062_mysql主从同步slave错误1062 2019-04-21
mysql构造器_MySQL行构造器表达式优化(Row Constructor Expression) 2019-04-21
2008日志清理 server sql_SQL Server 2008 清除日志 2019-04-21
mac mysql root 权限_Mac平台重新设置MySQL的root密码 2019-04-21
mysql新增一列_MySQL-ProxySQL中间件 2019-04-21
mysql 30入门_30分钟带你快速入门MySQL教程 2019-04-21
kangle主机怎么配置MySQL_kangle web服务+easypanel主机控制面板快速搭建网站和数据库以及管理空间详细教程... 2019-04-21
mysql 翻页 存储过程_MySQl通用翻页(存储过程) 2019-04-21
2020word替换所有文本_Excel字符函数(5):REPLACE、SUBSTITUTE查找替换函数之区别... 2019-04-21
win10安装ipython_win10环境 ipython app.py 8080 这里为什么是ipython 这步无法启动 2019-04-21
假定在MYSQL_假定在名称为教学库的数据库中包含有学生、课程和选课三个表,它们的定义如下 - 问答库... 2019-04-21
mysql多字段存储过程_mysql 的存储过程_多字段 2019-04-21