qq邮箱电脑版在哪里(电脑qq邮箱默认下载路径)
程序员文章站
2023-11-20 22:23:34
业务场景是不是服务器 down 了?爬虫的 dom 解析没有解析到内容?用户注册消息通知(代码异常通知等)邮件服务器与传输协议要在网络上实现邮件功能,必须要有专门的邮件服务器。这些邮件服务器类似于现实...
业务场景
- 是不是服务器 down 了?
- 爬虫的 dom 解析没有解析到内容?
- 用户注册
- 消息通知(代码异常通知等)
邮件服务器与传输协议
- 要在网络上实现邮件功能,必须要有专门的邮件服务器。这些邮件服务器类似于现实生活中的邮局,它主要负责接收用户投递过来的邮件,并把邮件投递到邮件接收者的电子邮箱中。
- smtp服务器地址:一般是 smtp.xxx.com,比如163邮箱是smtp.163.com,qq邮箱是smtp.qq.com。
- smtp协议
- 通常把处理用户smtp请求(邮件发送请求)的服务器称之为smtp服务器(邮件发送服务器)。
- pop3协议
- 通常把处理用户pop3请求(邮件接收请求)的服务器称之为pop3服务器(邮件接收服务器)。
java发送邮件
好了,基本原理和业务场景搞清楚了,下来以qq邮箱作为案例(163等其他邮箱也是类似的),基于ssm框架的,springboot同理,当然ssm框架都会配置了springboot还不是手到擒来
开启smtp服务
点击设置—— 账户
请记住这串编号,后面的配置会用到
导入依赖 关于spring的依赖自行删减
<!--邮件发送-->
<dependency>
<groupid>com.sun.mail</groupid>
<artifactid>javax.mail</artifactid>
<version>1.6.1</version>
</dependency>
<!--引入spring的上下文jar-->
<!-- https://mvnrepository.com/artifact/org.springframework/spring-context -->
<dependency>
<groupid>org.springframework</groupid>
<artifactid>spring-context</artifactid>
<version>4.3.22.release</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.springframework/spring-context-support -->
<dependency>
<groupid>org.springframework</groupid>
<artifactid>spring-context-support</artifactid>
<version>4.3.4.release</version>
</dependency>
<dependency>
<groupid>org.springframework</groupid>
<artifactid>spring-webmvc</artifactid>
<version>4.3.4.release</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.springframework/spring-tx -->
<dependency>
<groupid>org.springframework</groupid>
<artifactid>spring-tx</artifactid>
<version>4.3.13.release</version>
</dependency>
<dependency>
<groupid>junit</groupid>
<artifactid>junit</artifactid>
<version>4.12</version>
</dependency>
工程目录结构
设置配置文件 mail.properties
在163邮箱中同上的申请配置,可能和qq页面所在位置不一样,请自行查找(基本都是一样的)
#服务器主机名qq邮箱 smtp.xx.com 根据自己邮箱的使用自行设置 163邮箱: smtp.163.com
mail.smtp.host=smtp.qq.com
#自己的邮箱
mail.smtp.username=********@qq.com
#密码/客户端授权码 这里的授权码就是刚才在邮箱中生成的
mail.smtp.password=********
#编码字符
mail.smtp.defaultencoding=utf-8
#是否进行用户名密码校验
mail.smtp.auth=true
#设置超时时间
mail.smtp.timeout=20000
spring-.xml 有些内容自行删减 这是我copy过来的
spring-core.xml
<?xml version="1.0" encoding="utf-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/xmlschema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemalocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd">
<!--读取属性文件-->
<context:property-placeholder location="classpath:mail.properties"/>
<!--配置邮件接口-->
<bean id="javamailsender" class="org.springframework.mail.javamail.javamailsenderimpl">
<property name="host" value="${mail.smtp.host}"/>
<property name="username" value="${mail.smtp.username}"/>
<property name="password" value="${mail.smtp.password}"/>
<property name="defaultencoding" value="${mail.smtp.defaultencoding}"/>
<property name="javamailproperties">
<props>
<prop key="mail.smtp.auth">${mail.smtp.auth}</prop>
<prop key="mail.smtp.timeout">${mail.smtp.timeout}</prop>
</props>
</property>
</bean>
<context:component-scan base-package="com.*">
<context:include-filter type="annotation" expression="org.springframework.stereotype.controller"/>
</context:component-scan>
</beans>
sendemailcontroller
import org.springframework.beans.factory.annotation.autowired;
import org.springframework.core.io.filesystemresource;
import org.springframework.mail.javamail.javamailsender;
import org.springframework.mail.javamail.mimemessagehelper;
import org.springframework.stereotype.controller;
import org.springframework.web.bind.annotation.*;
import javax.mail.messagingexception;
import javax.mail.internet.internetaddress;
import javax.mail.internet.mimemessage;
import java.io.file;
import java.io.ioexception;
import java.util.properties;
/**
* @description: 发送邮件
* @author: 张楚涵
* @date: 2019/8/14 0014 15:58
* @version:1.0.0
*/
@restcontroller
public class senemailcontroller {
@autowired
private javamailsender javamailsender;//在spring中配置的邮件发送的bean
@requestmapping(value = "/send",method = requestmethod.get,produces = "text/html; charset=utf-8")
public object sendmail03(){
mimemessage mmessage=javamailsender.createmimemessage();//创建邮件对象
mimemessagehelper mmessagehelper;
properties prop = new properties();
string from;
try {
//从配置文件中拿到发件人邮箱地址
//根据自己的目录设置
prop.load(this.getclass().getclassloader().getresourceasstream("mail.properties"));
from = prop.get("mail.smtp.username")+"";
mmessagehelper=new mimemessagehelper(mmessage,true);
// mmessagehelper.setfrom(from);//发件人邮箱
// 第二个参数是你想发送邮件时想用的名字
mmessagehelper.setfrom(new internetaddress(from, "###", "utf-8"));
mmessagehelper.setto("*******@qq.com");//收件人邮箱
mmessagehelper.setsubject("******");//邮件的主题
mmessagehelper.setsubject("spring的邮件发送");//邮件的主题
//邮件的文本内容,true表示文本以html格式打开
mmessagehelper.settext("<p>这是使用spring的邮件功能发送的一封邮件</p><br/>" +
"<a href='https://blog.csdn.net/qq_41840847'>打开我的博客主页</a><br/>" +
"<img src='cid:fengye'>",true);
/*
file file=new file("f:/img/mr.png");//在邮件中添加一张图片
filesystemresource resource=new filesystemresource(file);
mmessagehelper.addinline("fengye", resource);//这里指定一个id,在上面引用
mmessagehelper.addattachment("mr.png", resource);//在邮件中添加一个附件
*/
javamailsender.send(mmessage);//发送邮件
} catch (messagingexception e) {
e.printstacktrace();
return "发送失败";
} catch (ioexception e) {
e.printstacktrace();
}
return "发送成功";
}
}