使用Java发送邮件
来源:互联网 发布:淘宝卖家二维码生成 编辑:程序博客网 时间:2024/06/05 03:25
本文是使用Java来发送邮件。涉及到以下知识技术:
SMTP协议
1. SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制邮件的中转方式。
2. SMTP协议属于TCP/IP协议簇,它帮助每台计算机在发送或中转信件时找到下一个目的地。
3. 通过SMTP协议所指定的服务器,就可以把E-mail寄到收信人的服务器上了,整个过程只要几分钟。
4. SMTP服务器则是遵循SMTP协议的发送邮件服务器,用来发送或中转发出的电子邮件。
5. SMTP协议默认端口号是25
POP3协议
1. POP3,全名为”Post Office Protocol-Version3”,即”邮局协议版本3”。
2. POP3协议属于TCP/IP协议簇,主要用于支持使用客户端远程管理在服务器上的电子邮件。
3. 通常把处理用户POP3请求(邮件接收请求)的邮件服务器称之为POP3服务器默认端口号:110.
邮件收发流程
代码实现
1. 硬件环境:Window8
2. 软件环境:jdk1.7.0.80、eclipse、maven3.5.2
3. Maven仓库地址:http://mvnrepository.com/
编写pom.xml文件
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.ck.javaSendMail</groupId> <artifactId>javaSendMail</artifactId> <version>0.0.1-SNAPSHOT</version> <dependencies> <!-- https://mvnrepository.com/artifact/com.sun.mail/javax.mail --> <dependency> <groupId>com.sun.mail</groupId> <artifactId>javax.mail</artifactId> <version>1.5.4</version> </dependency> <!-- https://mvnrepository.com/artifact/junit/junit --> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.10</version> <scope>test</scope> </dependency> </dependencies></project>
编写配置文件(config.properties)
#设置发送邮件需要身份验证mail.smtp.auth=true#设置发件人的邮箱服务器主机名#mail.host=smtp.163.commail.host=smtp.qq.com#开启debug调试模式mail.debug=true#发件人邮箱是否使用了ssl(qq邮箱是使用了ssl的)#mail.smtp.ssl.enable=falsemail.smtp.ssl.enable=true#设置发件人的信息from.user=2771287337@qq.comfrom.password=密码(这里改为自己的qq密码)#设置收件人的信息#to.user=2771287337@qq.com#to.user=chuangke218@163.comto.user=3244932549@qq.com
编写发送邮件的方法及测试方法
package com.ck.utils;import java.util.Properties;import javax.mail.Authenticator;import javax.mail.Message;import javax.mail.Message.RecipientType;import javax.mail.PasswordAuthentication;import javax.mail.Session;import javax.mail.Transport;import javax.mail.internet.InternetAddress;import javax.mail.internet.MimeMessage;/** * 邮件工具类 * @author 52363 * */public class MailUtils { public static void sendMail() throws Exception{ //1.创建链接,链接到邮箱服务器 final Properties properties = new Properties(); properties.load(MailUtils.class.getResourceAsStream("/config.properties")); Session session = Session.getDefaultInstance(properties, new Authenticator() {//匿名内部类 @Override protected PasswordAuthentication getPasswordAuthentication() { return new PasswordAuthentication(properties.getProperty("from.user"), properties.getProperty("from.password")); } }); //2.创建邮件对象,写邮件 Message message = new MimeMessage(session); message.setFrom(new InternetAddress(properties.getProperty("from.user")));//设置发件人 message.setRecipient(RecipientType.TO, new InternetAddress(properties.getProperty("to.user"))); message.setSubject("生日祝福");//设置邮件的主题 message.setContent("<h1>生日祝福</h1><p>祝你生日快乐!</p>", "text/html;charset=utf-8"); //3.发送邮件 Transport.send(message); System.out.println("发送成功!"); } public static void main(String[] args) throws Exception { sendMail(); }}
目录结构
总结
以上呢就是使用Java发送邮件的代码。我试过用网易的邮箱往QQ邮箱、QQ邮箱往网易邮箱以及QQ邮箱往QQ邮箱发邮件,都是可以的,不要忘了改配置文件中的信息,每次修改不只是修改用户名和密码,还要注意邮箱服务器那块的修改。
另外要注意的是,使用QQ邮箱来做发件人,需要开启QQ邮箱的POP3以及SMTP协议,而且腾讯要求使用QQ号绑定的手机发信息(qq邮箱的设置中会有提示),然后会返回一串授权码,在以上发邮件的代码中,发件人的密码就要用刚刚的那个授权码,而不能使用QQ号本身的密码。
源代码上传到了我贡献的资源中了,大家感兴趣可以去下载下来看~
- 使用java发送邮件
- 使用java发送邮件
- 使用java发送邮件
- 使用Java 发送邮件
- 使用Java发送邮件
- 使用Java发送邮件
- 使用java发送邮件
- java 使用javamail发送邮件
- java使用代理发送邮件
- 使用java mail 发送邮件
- 使用Java Mail发送邮件
- java 使用 mail 发送邮件
- 使用Java Mail发送邮件
- 使用Java Mail发送邮件
- JAVA 使用QQ发送邮件
- 使用JAVA 代码发送邮件
- Java使用spring发送邮件
- java使用qq发送邮件
- stick footer布局
- Android 端蓝牙模块的开发
- 入职如何谈薪资
- 【R 语言 数据抽样】将样本总体分为样本集和测试集
- linux find查找命令的两个高级用法
- 使用Java发送邮件
- 洛谷 2279 [HNOI2003] 消防局的设立 贪心+dfs
- 基本阈值的操作
- 关于加班与面试
- 复习试题:运算符以及类型的强制转换
- iOS8 苹果自带的毛玻璃效果
- 事务与两阶段提交
- C语言基础练习12
- 清理ambari安装的hadoop集群