Java Mail 实现第三方邮件发送功能

  1 创建一个用于发送邮件的类

  1 package com.latiny.service;
  2
  3 import java.io.IOException;
  4 import java.io.InputStream;
  5 import java.util.Date;
  6 import java.util.Properties;
  7 import javax.mail.Session;
  8 import javax.mail.Transport;
  9 import javax.mail.internet.InternetAddress;
 10 import javax.mail.internet.MimeMessage;
 11
 12 public class SendMail {
 13
 14      /*
 15       1 发件人的 邮箱 和 密码
 16       2 某些邮箱服务器为了增加邮箱本身密码的安全性,给 SMTP 客户端设置了独立密码(有的邮箱称为"授权码"),
 17       3 对于开启了独立密码的邮箱, 这里的邮箱密码必需使用这个独立密码(授权码)。
 18      */
 19     private String sendEmail;
 20     private String password;
 21
 22     //发件人邮箱的 SMTP服务器地址, 必须准确, 不同邮件服务器地址不同, 一般(只是一般, 绝非绝对)格式为: smtp.xxx.com
 23     private String host;
 24
 25     //收件人邮箱
 26     private String receiveEmail;
 27
 28     // 发送主题,发送内容
 29     private String subject;
 30     private String content;
 31
 32     //读取配置文件
 33     private Properties pp;
 34     InputStream inStream;
 35
 36     //从系统的配置文件取值给成员变量赋值
 37     private void initVariable()
 38     {
 39         pp = new Properties();
 40         inStream = SendMail.class.getClassLoader().getResourceAsStream("com/latiny/service/emailConfig.properties");
 41         try
 42         {
 43             pp.load(inStream);
 44             sendEmail = pp.getProperty("sendEmail");
 45             password = pp.getProperty("password");
 46             host = pp.getProperty("host");
 47
 48         } catch (IOException e) {
 49             // TODO Auto-generated catch block
 50             e.printStackTrace();
 51         }
 52     }
 53
 54     public SendMail(String receiveEmail, String subject, String content)
 55     {
 56         this.subject = subject;
 57         this.receiveEmail = receiveEmail;
 58         this.content = content;
 59         initVariable();
 60         sendOut();
 61     }
 62
 63     private MimeMessage createMessage(Session session, String subject, String content) throws Exception
 64     {
 65         // 创建邮件对象
 66         MimeMessage message = new MimeMessage(session);
 67
 68         // 设置发件人
 69         message.setFrom(new InternetAddress(sendEmail, "订单成功", "UTF-8"));
 70
 71         // 收件人(可以增加多个收件人、抄送、密送)
 72         message.setRecipient(MimeMessage.RecipientType.TO, new InternetAddress(receiveEmail, "Latiny 用户", "UTF-8"));
 73
 74         // 邮件主题
 75         message.setSubject(subject, "UTF-8");
 76
 77         // Content: 邮件正文(可以使用html标签)
 78         message.setContent(content, "text/html;charset=UTF-8");
 79
 80         // 置发件时间
 81         message.setSentDate(new Date());
 82
 83         // 保存设置
 84         message.saveChanges();
 85
 86         return message;
 87     }
 88
 89     private void sendOut()
 90     {
 91
 92         try
 93         {
 94             // 创建参数配置, 用于连接邮件服务器的参数配置
 95             Properties props = new Properties();                    // 参数配置
 96             props.setProperty("mail.transport.protocol", "smtp");   // 使用的协议(JavaMail规范要求)
 97             props.setProperty("mail.smtp.host", host);               // 发件人的邮箱的 SMTP 服务器地址
 98             props.setProperty("mail.smtp.auth", "true");            // 需要请求认证
 99
100             // PS: 某些邮箱服务器要求 SMTP 连接需要使用 SSL 安全认证 (为了提高安全性, 邮箱支持SSL连接, 也可以自己开启),
101             // 如果无法连接邮件服务器, 仔细查看控制台打印的 log, 如果有有类似 “连接失败, 要求 SSL 安全连接” 等错误,
102             // 打开下面 /* ... */ 之间的注释代码, 开启 SSL 安全连接。
103             // SMTP 服务器的端口 (非 SSL 连接的端口一般默认为 25, 可以不添加, 如果开启了 SSL 连接,需要改为对应邮箱的 SMTP 服务器的端口, 具体可查看对应邮箱服务的帮助,
104             // QQ邮箱的SMTP(SLL)端口为465或587, 其他邮箱自行去查看)
105
106             /*
107             final String smtpPort = "465";
108             props.setProperty("mail.smtp.port", smtpPort);
109             props.setProperty("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
110             props.setProperty("mail.smtp.socketFactory.fallback", "false");
111             props.setProperty("mail.smtp.socketFactory.port", smtpPort);
112             */
113
114             //根据配置创建会话对象,用于和邮件服务器通信
115             Session session = Session.getInstance(props);
116             session.setDebug(true);
117             MimeMessage message = this.createMessage(session, this.subject, this.content);
118
119              // 根据 Session 获取邮件传输对象
120             Transport transport = session.getTransport();
121
122             // 使用 邮箱账号 和 密码 连接邮件服务器, 这里认证的邮箱必须与 message 中的发件人邮箱一致, 否则报错
123             //
124             //    PS_01: 成败的判断关键在此一句, 如果连接服务器失败, 都会在控制台输出相应失败原因的 log,
125             //           仔细查看失败原因, 有些邮箱服务器会返回错误码或查看错误类型的链接, 根据给出的错误
126             //           类型到对应邮件服务器的帮助网站上查看具体失败原因。
127             //
128             //    PS_02: 连接失败的原因通常为以下几点, 仔细检查代码:
129             //           (1) 邮箱没有开启 SMTP 服务;
130             //           (2) 邮箱密码错误, 例如某些邮箱开启了独立密码;
131             //           (3) 邮箱服务器要求必须要使用 SSL 安全连接;
132             //           (4) 请求过于频繁或其他原因, 被邮件服务器拒绝服务;
133             //           (5) 如果以上几点都确定无误, 到邮件服务器网站查找帮助。
134             //
135             //    PS_03: 仔细看log, 认真看log, 看懂log, 错误原因都在log已说明。
136             transport.connect(sendEmail,password);
137
138             // 发送邮件, 发到所有的收件地址, message.getAllRecipients() 获取到的是在创建邮件对象时添加的所有收件人, 抄送人, 密送人
139             transport.sendMessage(message, message.getAllRecipients());
140
141             // 关闭连接
142             transport.close();
143
144         } catch (Exception e) {
145             // TODO Auto-generated catch block
146             e.printStackTrace();
147         }
148     }
149
150 }

  配置文件 emailConfig.properties:

sendEmail = [email protected].com
password = email密码,非登录密码,而是专门提供的授权码
host =smtp.163.com

  

原文地址:https://www.cnblogs.com/Latiny/p/8613417.html

时间: 2024-11-17 20:04:01

Java Mail 实现第三方邮件发送功能的相关文章

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

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

邮件发送功能开发

作为一名.Net开发,"邮件发送"功能的开发和使用是必须要掌握的,因为这个功能作为"消息推送"的一种手段经常出现在各种.Net系统中,所以本文将对.Net平台下的"邮件发送",做一个细致的分析! 一.who需要邮件功能 1.服务提供方:需提供邮件收发客户端或Web服务.如:QQ邮箱.GMail邮箱.126.163等知名邮件服务提供商.注:如果你使用的第三方不知名邮件服务商提供的邮件收发服务,通过其发出的邮件,可能会被其他知名邮件服务提供商的STM

ThinkPHP中邮件发送功能

初次使用thinkphp框架,开发一个邮件发送功能,由于对框架不熟悉折腾了几个小时终于成功了,以下是代码记录. 此函数只能在ThinkPHP中使用且需要phpmailer扩展的支持:phpmail的下载地址:https://code.google.com/a/apache-extras.org/p/phpmailer 将phpmailer解压后放置扩展放置到第三方类库扩展目录下: ThinkPHP/Extend/Vendor/文件夹下即可,并使用vendor方法来导入.更详细介绍参考:http:

java mail实现Email的发送,完整代码

java mail实现Email的发送,完整代码 1.对应用程序配置邮件会话 首先, 导入jar <dependencies> <dependency> <groupId>com.sun.mail</groupId> <artifactId>javax.mail</artifactId> <version>1.5.2</version> </dependency> </dependencies

redmine邮件发送功能配置详解

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

Nagios(CenOSX64位下用系统自带的mail调用第三方邮件服务器的方法)

Nagios:CenOSX64位下用系统自带的mail调用第三方邮件服务器来发送警报邮件,发送地址可以自定义 利用外部邮箱发送邮件的方法 bin/mail会默认使用本地sendmail发送邮件,这样要求本地的机器必须安装和启动Sendmail服务,配置非常麻烦,而且会带来不必要的 资源占用.而通过修改配置文件可以使用外部SMTP服务器,可以达到不使用sendmail而用外部的smtp服务器发送邮件的目的: 修改/etc/nail.rc (/etc/mail.rc) 在文件末尾添加如下内容,并做相

C#实现简单的邮件发送功能

唉,最近要做一个项目,里面需要实现邮件发送功能.在网络上也找一些看,自己也随便写下.也当做是给自己复习下吧,如有不对之处还请大家指出.谢谢! 首先我是创建一个实体对象Model (EmailParameterSet) : 1 public class EmailParameterSet 2 { 3 /// <summary> 4 /// 收件人的邮件地址 5 /// </summary> 6 public string ConsigneeAddress { get; set; }

xampp 和thinkphp 建一个本地站并实现邮件发送功能

一.xampp的安装使用 1.首先看下什么是xampp,想要建站的小伙伴肯定都知道,XAMPP(Apache+MySQL+PHP+PERL)是一个功能强大的建 XAMPP 软件站集成软件包. 它可以在Windows.Linux.Solaris.Mac OS X 等多种操作系统下安装使用 2.需要什么版本到官网上下载:xampp下载 3.安装很简单,傻瓜式安装,感觉mysql选项可以去掉,自己安装一个,具体安装看这个:mysql安装,另外路径建议只改动盘符,保留后缀路径 4.安装好的目录如下 5.

.NET开发邮件发送功能的全面教程(含邮件组件源码)

ref: http://www.cnblogs.com/heyuquan/p/net-batch-mail-send-async.html 今天,给大家分享的是如何在.NET平台中开发"邮件发送"功能.在网上搜的到的各种资料一般都介绍的比较简单,那今天我想比较细的整理介绍下: 1)         邮件基础理论知识 2)         邮件发送相关.NET类库 3)         介绍我开发的一个发送邮件的小组件(MailHelper) 4)         MailHelper组