Java中使用SMTP协议发送电子邮件的具体的步骤:
1、首先需要获取发送邮件的Session对象
Session session = Session.getDefaultInstance(properties,authorcator);
2、根据session对象,获取待发送的邮件消息
MimeMessage mimeMessage = new MimeMessage(session);
3、设置发件人,收件人,标题,邮件内容,附件,发送时间等;
4、利用Transport发送邮件
5、代码必须依赖与mail.jar 包
Java实现代码:
1、发送邮件,注意:该类有两个功能,一个是发送普通文本邮件;一个是发送html邮件,两者的本质是相同的,mime类型有所区别而已:

/*** 使用SMTP协议发送电子邮件*/
public class SendMail{// 邮件发送协议private final static String PROTOCOL = "smtp";// SMTP邮件服务器private final static String HOST = "smtp.exmail.qq.com";// SMTP邮件服务器默认端口private final static String PORT = "25";// 是否要求身份认证private final static String IS_AUTH = "true";// 是否启用调试模式(启用调试模式可打印客户端与服务器交互过程时一问一答的响应消息)private final static String IS_ENABLED_DEBUG_MOD = "true";// 发件人private static String from = "test_adimin@126.com";// 初始化连接邮件服务器的会话信息private static Properties props = null;static {props = new Properties();props.setProperty("mail.transport.protocol", PROTOCOL);props.setProperty("mail.smtp.host", HOST);props.setProperty("mail.smtp.port", PORT);props.setProperty("mail.smtp.auth", IS_AUTH);props.setProperty("mail.debug", IS_ENABLED_DEBUG_MOD);}/*** 发送电子邮件* @param address 邮件地址* @param fileNames 文件名* @param files 文件* @param title 文件主题* @param content 文件内容* @throws Exception*/public static void sendHtmlEmail(Address[] address, String[] fileNames,File[] files, String title, String content) throws Exception {// 创建Session实例对象Session session = Session.getDefaultInstance(props,new MyAuthenticator());// 创建邮件内容MimeMessage message = new MimeMessage(session);// 邮件主题,并指定编码格式message.setSubject(title, "utf-8");// 发件人message.setFrom(new InternetAddress(from));// 收件人message.setRecipients(RecipientType.BCC, address);// 创建一个MIME子类型为“related”的MimeMultipart对象MimeMultipart mp = new MimeMultipart("mixed");// 创建一个表示正文的MimeBodyPart对象,并将它加入到前面创建的MimeMultipart对象中MimeBodyPart htmlPart = new MimeBodyPart();mp.addBodyPart(htmlPart);// 将MimeMultipart对象设置为整个邮件的内容message.setContent(mp);try {MimeBodyPart[] mbp = new MimeBodyPart[fileNames.length];DataSource ds1;DataHandler dh1;for (int i = 0; i < fileNames.length; i++) {mbp[i] = new MimeBodyPart();mp.addBodyPart(mbp[i]);ds1 = new FileDataSource(files[i + 1]);dh1 = new DataHandler(ds1);mbp[i].setFileName(MimeUtility.encodeText(fileNames[i]));mbp[i].setDataHandler(dh1);}} catch (Exception e) {e.printStackTrace();}// 创建一个MIME子类型为"alternative"的MimeMultipart对象,并作为前面创建的htmlPart对象的邮件内容MimeMultipart htmlMultipart = new MimeMultipart("alternative");// 创建一个表示html正文的MimeBodyPart对象MimeBodyPart htmlBodypart = new MimeBodyPart();// 其中cid=androidlogo.gif是引用邮件内部的图片,即imagePart.setContentID("androidlogo.gif");方法所保存的图片htmlBodypart.setContent("<span'>" + content + "</span>","text/html;charset=utf-8");htmlMultipart.addBodyPart(htmlBodypart);htmlPart.setContent(htmlMultipart);// 保存并生成最终的邮件内容message.saveChanges();// 发送邮件Transport.send(message);}static class MyAuthenticator extends Authenticator {private String username = "test_adimin@126.com";private String password = "1";public MyAuthenticator() {super();}public MyAuthenticator(String username, String password) {super();this.username = username;this.password = password;}@Overrideprotected PasswordAuthentication getPasswordAuthentication() {return new PasswordAuthentication(username, password);}}public static void main(String[] args) throws Exception {sendHtmlEmail(new Address[]{new InternetAddress("869095990@qq.com", "", "utf-8")},new String[]{"da","da"},new File[]{},"aa","aa");}
}

2、创建身份验证:

/** Licensed to the Apache Software Foundation (ASF) under one* or more contributor license agreements.  See the NOTICE file* distributed with this work for additional information* regarding copyright ownership.  The ASF licenses this file* to you under the Apache License, Version 2.0 (the* "License"); you may not use this file except in compliance* with the License.  You may obtain a copy of the License at**  http://www.apache.org/licenses/LICENSE-2.0** Unless required by applicable law or agreed to in writing,* software distributed under the License is distributed on an* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY* KIND, either express or implied.  See the License for the* specific language governing permissions and limitations* under the License.*/package javax.mail;import java.net.InetAddress;/*** @version $Rev: 467553 $ $Date: 2006-10-25 00:01:51 -0400 (Wed, 25 Oct 2006) $*/
public abstract class Authenticator {private InetAddress host;private int port;private String prompt;private String protocol;private String username;synchronized PasswordAuthentication authenticate(InetAddress host, int port, String protocol, String prompt, String username) {this.host = host;this.port = port;this.protocol = protocol;this.prompt = prompt;this.username = username;return getPasswordAuthentication();}protected final String getDefaultUserName() {return username;}protected PasswordAuthentication getPasswordAuthentication() {return null;}protected final int getRequestingPort() {return port;}protected final String getRequestingPrompt() {return prompt;}protected final String getRequestingProtocol() {return protocol;}protected final InetAddress getRequestingSite() {return host;}
}

另一种比较详细的详细的写法参照这个博客,写的很详细http://dove19900520.iteye.com/blog/2005303

Java中使用SMTP协议发送电子邮件相关推荐

  1. SMTP协议解读以及如何使用SMTP协议发送电子邮件

    电子邮件协议中POP3协议用于接收邮件,SMTP协议用于发送邮件.SMTP的全称为Simple Mail Transfer Protocol,也就是简单邮件传输协议,字如其名.   相较于POP3而言 ...

  2. python网络编程smtp协议发送电子邮件

    SMTP协议 SMTP 的全称是"Simple Mail Transfer Protocol",即简单邮件传输协议.它是一组用于从源地址到目的地址传输邮件的规范,通过它来控制邮件的 ...

  3. Java中通过TCP协议发送和接收数据-Socket编程

    TCP TCP协议是面向连接.保证高可靠性(数据无丢失.数据无失序.数据无错误.数据无重复到达)传输层协议. TCP通过三次握手建立连接,通讯完成时要拆除连接,由于TCP是面向连接的所以只能用于端到端 ...

  4. C# WinForm 使用SMTP协议发送QQ邮箱验证码

    文章目录 前言 功能实现步骤 一.获取QQ邮箱授权码 二.功能界面 三.创建发送邮箱验证码的类 四.在From1中调用类中的函数,实现功能 前言   在程序设计中,发送验证码是常见的一个功能,用户在注 ...

  5. 使用java语言基于SMTP协议手写邮件客户端

    使用java语言基于SMTP协议手写邮件客户端 1. 说明 电子邮件是互联网上常见的应用,他是互联网早期的产品,直至今日依然受到广大用户的喜爱(在中国可能因为文化背景不同,电子邮件只在办公的时候常用) ...

  6. java使用javax.mail包发送电子邮件:设置账号、密码、主题、文本、附件

    分享一个朋友的人工智能教程.零基础!通俗易懂!风趣幽默!还带黄段子!大家可以看看是否对自己有帮助:点击打开 docker/kubernetes入门视频教程 全栈工程师开发手册 (作者:栾鹏) java ...

  7. 基于SMTP协议的电子邮件客户端程序

    基于SMTP协议的电子邮件客户端程序 电子邮件的完整传输过程: ​ 发件人 -> MUA -> MTA -> MTA -> 若干个MTA -> MDA <- MUA ...

  8. iphone发送邮件html,iPhone使用smtp服务器发送电子邮件?

    在我的应用程序中,我能够使用smtp服务器发送电子邮件,因为我输入了正确的电子邮件ID和密码. 但当我输入我的Gmail或雅虎帐户详细信息时,我无法发送邮件. 因为我设置了relayHost = @& ...

  9. Java中使用KCP协议

    Java中使用KCP协议_何小成的成长记录-CSDN博客_java kcp Java中使用KCP协议--性能测试及应用_何小成的成长记录-CSDN博客_kcp协议 传统游戏项目一般使用TCP协议进行通 ...

最新文章

  1. python3.6使用pygal模块不具交互性,图片不能显示数据
  2. linux 可执行文件与写操作的同步问题
  3. Android程序获得APP哈希值,Android – SMS Retriever API – 计算应用程序的哈希字符串问题...
  4. chrome设置微信ua_新支付宝json_ua分析
  5. java自适应table_Java 设置Word中的表格自适应的3种方式
  6. 闲鱼前端基于serverless的一种多端开发解决方案
  7. ======第二章进程管理======
  8. 在matlab下实现TDOA定位算法性能仿真
  9. java base server 状态_SQL Server:数据库陷入“恢复”状态 - SQL Server: Database stuck in “Restoring” state...
  10. Costomize Print Output
  11. 傲腾会是NAND的接班人么?
  12. linux java8 安装包(版本8u131-b11)
  13. 联通ip电视html1连不上,刷华硕固件看联通IPTV和上网两不误
  14. centos查看CPU温度
  15. 计算机教学说课稿,计算机教学说课稿
  16. [Pandas] 数据形状df.shape
  17. 【备战春招/秋招系列】美团Java面经总结终结篇 (附详解答案) 1
  18. 三维点云数据集汇总(分类+检测+识别)
  19. 面试必备:高频算法题汇总「图文解析 + 教学视频 + 范例代码」必知必会 排序 + 二叉树 部分!
  20. pdfbox报错缺少字体问题解决

热门文章

  1. 解决SimpleDateFormat线程不安全问题
  2. 《微观经济学》 第八章
  3. 手把手教大家在自己的Windows电脑上搭建一个视频电话系统(基于开源项目FreeSwitch+Linphone)
  4. 基于SSM框架开发的图书管理系统
  5. MySql基础语法-java学习
  6. ajax跨域获取cookie,ajax跨域获取cookie信息(示例代码)
  7. springboot RabbitMQ整合出现Reply received after timeout 异常
  8. 昆仑通泰历史数据导出到u盘_MCGS配方组导出到U盘案例-专业自动化论坛-中国工控网论坛...
  9. mysql打开eqd_Java 使用JDBC连接MySQL
  10. 关闭rabbitmq连接健康检查