示例: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("发送完毕!");
}
}

参考:http://commons.apache.org/proper/commons-email/userguide.html

已使用 163 邮箱测试通过,且支持 SSL 连接。 发送邮件的更多相关文章

  1. ECMall如何支持SSL连接邮件服务器的配置

    首先,主要是ecmall使用的phpmailer版本太低,不支持加密连接. 然后,得对相应代码做一定调整. 1. 覆盖phpmailer 请从附件进行下载: http://files.cnblogs. ...

  2. 弄了一个支持SSL的TCP客户端

    近日需要做一些TCP的收发的调试,到网上去找TCP调试工具,找了好几款,发现不是功能不全就是不支持HEX,更重要的SSL也不支持,于是动手写了一款,叫TCPRunner,有以下特性: 使用异步IO方式 ...

  3. SSL邮件发送(腾讯企业邮箱测试通过,可以支持多附件)

    参考网址:http://www.cnblogs.com/LUA123/p/5575134.html ,谢谢! package net.common.utils.common; import java. ...

  4. jeakins配置邮件通知,附带解决535报错:authentication failed,如果发现测试邮件可以发出,项目构成无法发出邮件,请开启SSL认证,端口号改为(465),qq邮箱、163邮箱通用

    535报错解决方案:调用163邮箱服务器来发送邮件,我们需要开启POP3/SMTP服务,这时163邮件会让我们设置客户端授权码,这个授权码替代上面代码部分的passwd即可成功发送邮件 如果设置的邮箱 ...

  5. [转]Redmine 配置163邮箱

    redmine的邮件发送功能还是很有用的.像项目有更新啦,任务分配啦,都能邮件发送的相关责任人.我自己在linux服务器上安装并启动了redmine后,邮件一直发送了不了.查了网上的资料,都是讲修改下 ...

  6. [Python爬虫] Selenium实现自动登录163邮箱和Locating Elements介绍

    前三篇文章介绍了安装过程和通过Selenium实现访问Firefox浏览器并自动搜索"Eastmount"关键字及截图的功能.而这篇文章主要简单介绍如何实现自动登录163邮箱,同时 ...

  7. dedecms织梦自定义表单发送到邮箱-用163邮箱发送邮件

    https://www.baidu.com/s?ie=utf-8&f=8&rsv_bp=1&tn=monline_3_dg&wd=dedecms 邮箱&oq=d ...

  8. selenium数据驱动模式实现163邮箱的登录及添加联系人自动化操作

    项目结构如下: 要求python3.0 selenium3.0 下面是代码: appModubles:addContactPersonActtion.py和LoginAction.py addCont ...

  9. 利用Python+163邮箱授权码发送带附件的邮件

    背景 前段时间写了个自动爬虫的脚本,定时在阿里云服务器上执行,会从某个网站上爬取链接保存到txt文本中,但是脚本不够完善,我需要爬虫完毕之后通过邮件把附件给我发送过来,之前写过一个<利用Pyth ...

随机推荐

  1. [LeetCode] 102. Binary Tree Level Order Traversal_Medium tag: BFS

    Given a binary tree, return the level order traversal of its nodes' values. (ie, from left to right, ...

  2. 常用软件安装及VS插件工具

    常用开发工具安装 开发环境 Visual Studio 2013 Microsoft SQL Server 2008 源代码管理 Git TortoiseGit GitScc Provider Cru ...

  3. http协议基础(十)实体首部字段

    1.定义 包含在请求和响应中的实体部分所使用的首部,用于补充内容的更新时间等与实体相关的信息 2.Allow 通知客户端能够支持的Request-URI指定资源的所有http方法:如果服务器接收到不支 ...

  4. 2018-2019-2 20165209 《网络对抗技术》Exp3:免杀原理与实践

    2018-2019-2 20165209 <网络对抗技术>Exp3:免杀原理与实践 1 免杀原理与实验内容 1.1 免杀原理 一般是对恶意软件做处理,让它不被杀毒软件所检测.也是渗透测试中 ...

  5. linux基础命令---rm

    rm 删除文件和目录,默认情况下不会删除目录. 此命令的适用范围:RedHat.RHEL.Ubuntu.CentOS.SUSE.openSUSE.Fedora. 1.语法       rm [选项]  ...

  6. 4 个技巧学习 Golang

    到达 Golang 大陆:一位资深开发者之旅. 2014 年夏天…… IBM:“我们需要你弄清楚这个 Docker.” 我:“没问题.” IBM:“那就开始吧.” 我:“好的.”(内心声音):”Doc ...

  7. velocity #parse抽象重用部分组件

    在某些时候,处于重用的目的,我们会选择将可以重用的部分内容剥离在单独的模板文件中,比如对于查询页面的表格部分,因为现在很多的条件可能是通过弹出查询框的方式来实现,而作为普通页面的时候,他们会有更多的功 ...

  8. j2ee分布式缓存同步实现方案dlcache v1.0.1

    j2ee分布式缓存同步实现方案dlcache v1.0.1 发布 修复问题: 1.支持两个层次的缓存,典型的用于产品大类.产品小类,数据字典以及子项: 更新后见: pan http://pan.bai ...

  9. 09: xmltodict 模块将xml格式转成json格式

    1.1 : xmltodict 模块将xml格式转成json格式 <?xml version="1.0"?> <!--#版本号--> <data> ...

  10. 01: JavaScript实例

    1.1 基础 JavaScript 实例 <body> <script type="text/javascript"> document.write(&qu ...