邮件发送的实现

一、了解邮件发送的流程

如上图,假如用户A使用QQ邮箱向163邮箱的使用者用户B发送邮件。用户A登录邮件客户端软件,填写收件人,主题和正文,邮件服务器按照SMTP协议将用户填写的内容进行数据格式化处理,再通过邮件服务器通过互联网发送到用户B的邮件服务器。

用户B的邮件服务器接收到了用户A发送的邮件后会把该邮件依据SMTP协议将从互联网接收的邮件进行处理然后保存在用户B的163邮件内部存储空间,用户登录邮箱客户端后会从该163邮件内部存储空间中依照POP3协议读取存在服务器中的邮件。

其中SMTP协议使用的端口号为25,POP3使用的端口号为110.

二、实现邮件发送使用到的工具类

Java如果实现邮件发送首先要导入能实现邮件发送的jar包,SUN公司提供了javaMail的jar包。

Maven中的坐标如下

         <!-- Javamail -->
        <dependency>
            <groupId>javax.mail</groupId>
            <artifactId>mail</artifactId>
            <version>1.4.4</version>
        </dependency>

        <dependency>
            <groupId>joda-time</groupId>
            <artifactId>joda-time</artifactId>
            <version>2.9.9</version>
        </dependency>

        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi-ooxml</artifactId>
            <version>4.0.1</version>
        </dependency>

添加实现邮件发送有好多工具类,下方是由Apache提供的一个工具类MailUtil工具类,只需修改一些参数就可以直接使用。直接把该工具类放在Utils包下调用即可。

import javax.mail.Address;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import java.util.Properties;

public class MailUtil {
public static final String HOST="smtp.163.com";//"smtp.sina.com","smtp.qq.com",发送者使用的邮件服务器主机地址public static final String USER="";//发送者的邮箱用户名public static final String PASSWORD="";//发送者的邮箱密码
    /**
     * 实现邮件发送的方法
     * @param to  收件人地址
     * @param subject  主题
     * @param content  内容
     * @throws Exception
     */
    public static void sendMsg(String to ,String subject ,String content) throws Exception{
        Properties props = new Properties();
        props.setProperty("mail.smtp.host", HOST);  //设置主机地址   smtp.qq.com    smtp.sina.com

        props.setProperty("mail.smtp.auth", "true");//认证

        //2.根据以上参数产生一个相对应的用于邮件发送的Session对象
        Session session = Session.getInstance(props);

        //3.产生一个邮件的消息对象
        MimeMessage message = new MimeMessage(session);

        //4.设置消息的发送者
        Address fromAddr = new InternetAddress(USER);
        message.setFrom(fromAddr);

        //5.设置消息的接收者
        Address toAddr = new InternetAddress(to);
        //TO 直接发送  CC抄送    BCC密送
        message.setRecipient(MimeMessage.RecipientType.TO, toAddr);

        //6.设置主题
        message.setSubject(subject);
        //7.设置正文
        message.setText(content);

        //8.准备发送,得到发送器
        Transport transport = session.getTransport("smtp");
        //9.建立发送器与发送服务器之间的连接,三个参数分别为发送者服务器的主机,发送者的邮箱,发送邮箱对应的密码
        transport.connect(HOST, USER, PASSWORD);
        //10.发送邮件
        transport.sendMessage(message, message.getAllRecipients());

        //11.关闭
        transport.close();
    }

}

三、测试

通过Junit进行测试如下

原文地址:https://www.cnblogs.com/kitor/p/11070306.html

时间: 2024-10-30 13:04:58

邮件发送的实现的相关文章

学习笔记之邮件发送篇

用脚本语言发送邮件是系统管理员必备技能 对系统定期检查或者当服务器受到攻击时生成文档和报表. 发布这些文档最快速有效的方法就是发送邮件. python中email模块使得处理邮件变得比较简单 发送邮件主要用到了smtplib和email两个模块,这里首先就两个模块进行一下简单的介绍: 本段摘录于    http://www.cnblogs.com/xiaowuyi/archive/2012/03/17/2404015.html 1.smtplib模块 smtplib.SMTP([host[, p

java-基于JavaMail的Java邮件发送

1.基于JavaMail的Java邮件发送:简单邮件发送 2.基于JavaMail的Java邮件发送:复杂邮件发送

更改邮件发送语言为英语,解决编码为UTF8邮箱注册账号,邮件内容乱码问题

Change email English language, code for UTF8 mailbox registered account, email content garbled. 1. code analysis 乱码分析 通过对中文编码的邮件服务器使用原来的系统(GB2312) The original system used by the mail server encoding for the Chinese code (GB2312) 我使用outlook.com的邮箱(UT

redmine邮件发送功能配置详解

redmine的邮件发送功能还是很有用的. 像项目有更新啦,任务分配啦,都能邮件发送的相关责任人. 我自己在linux服务器上安装并启动了redmine后,邮件一直发送了不了. 查了网上的资料,都是讲修改下配置文件就可以了,他们没错,只是没有讲全. 下面是我整理的一个redmine邮件发送功能设置的一个完整流程. 1. sendmail安装与检查 linux机器上安装的redmine要能发送邮件,先得是本机的sendmail功能是正常的. 查看sendmail进程是否已正常启动: $ ps au

自动化邮件报告平台-邮件发送highchart图表

前段时间参与开发这样的一个系统,负责前端设计开发,使用人员提出需要在邮件发送的时候自动获取这些highchart图表数据,并显示在平台页面上,当发送邮件的时候也把图表附带在邮件中. highchart是一个比较强大的图表组件,这个图表组件以svg方式渲染在网页上,渲染完毕后会在网页中添加了svg元素,可以通过dom 或者jQuery 把svg内容单独抽取出来,此svg元素也能够在网页上直接显示,如下图所示.  但是,在邮箱环境下,这些svg元素不一定能展示在邮件里面,各种邮箱环境不同,在手机端邮

JavaMail 邮件发送之使用qq邮箱

所需jar包:comment-email.jar     mail.jaractivation.jar 一. 配置QQ邮箱的IMAP 进入qq电子邮件点击 设置->账户里开启 SMTP 服务(开启IMAP/SMTP服务)   注意:在启用QQ邮箱的14天之后才能开启此服务 开启之后会得到授权码,此授权码要记住或者保存到文本文件当中发送邮件的时候需要作为验证密码使用. 二.使用JavaMail发送一封简单邮件 的示例代码: public static void main(String[] args

全网备份中邮件发送的报错解决-20160926

第1章 邮件发送不成功解决方法: 1.1故障现象: [[email protected] scripts]# mail -s "Backup results_$(date+%F)" [email protected] </tmp/mail_$(date +%F).txt [[email protected] scripts]# smtp-server: 535 Error: authenticationfailed "/root/dead.letter" 13

用ASP.NET Core 1.0中实现邮件发送功能-阿里云邮件推送篇

在上篇中用MailKit实现了Asp.net core 邮件发送功能,但一直未解决阿里云邮件推送问题,提交工单一开始的回复不尽如人意,比如您的网络问题,您的用户名密码不正确等,但继续沟通下阿里云客户还是很耐心的. 最终结论,是由于MailKit发送了两次EHLO命令,查看了MailKit源码后竟然发现,里面写了硬编码: if (host != "smtp.strato.de" && host != "smtp.sina.com") Ehlo (can

通过邮件发送running process输出最后N行

#!/usr/bin/python #coding: utf-8 import sys import smtplib from email.mime.text import MIMEText import re,commands def lastline():     global pos     while True:         pos = pos - 1         try:             f.seek(pos, 2)             if f.read(1) =

使用Spring的JAVA Mail支持简化邮件发送(转)

闲来无事,翻看<Spring in Action>,发现Spring集成了对JAVA Mail的支持,有点小激动的看了一遍,嗯,话说真的简单了很多. Spring的邮件发送的核心是MailSender接口,在Spring3.0中提供了一个实现类JavaMailSenderImpl,这个类是发送邮件的核心类.可以通过在配置文件中配置使用,当然也可以自己硬编码到代码中(方便起见,下面的演示代码都是硬编码到代码中,省得配置麻烦). Spring提供的邮件发送不仅支持简单邮件的发送.添加附件,而且还可