文档章节

java发送邮件功能,以发送qq邮件为例

大大的微笑
 大大的微笑
发布于 2017/08/18 14:12
字数 434
阅读 131
收藏 0

问题①: java发送qq邮件出现如下错误的解决方法:

     503 Error: need EHLO and AUTH first !

pop.put("mail.smtp.auth", "true");//注意value值不能不设置,并且不能是Boolean类型,应为字符串,否则会报如上所示错误

问题②: Could not connect to SMTP host: smtp.qq.com, port: 465, response: -1

原因:

    465端口是为SMTPS(SMTP-over-SSL)协议服务开放的,这是SMTP协议基于SSL安全协议之上的一种变种协议.

  解决方法:

       配置文件需要加上如下代码即可解决.

pop.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");

附上所有的代码:

配置文件:

mail:
    mailhost: smtp.qq.com
    mailport: 465
    user: 邮箱用户名
    password: 密码(qq为授权码)
    mailFrom: xxx@foxmail.com
    mailTo: xxx@qq.com,xxx@qq.com,xxx@foxmail.com
    properties:
      mail:
      	smtp:
      	  auth: true
      	  mailtimeout: 1000
      	  mailssl: javax.net.ssl.SSLSocketFactory
      	  starttls: 
      	     enable: true
      	     required: true
    

java代码:

     @Value("${mailhost}")
	private String host;
	
	@Value("${mailport}")
	private Integer port;
	
	@Value("${user}")
	private String username;

	@Value("${password}")
	private String password;
	
	@Value("${mailFrom}")
	private String from;
	
	@Value("${mailTo}")
	private String [] to;

	@Value("${auth}")
	private String auth;

	@Value("${enable}")
	private Boolean enable;

	@Value("${required}")
	private Boolean required;

	@Value("${mailtimeout}")
	private Integer timeout;
	
	@Value("${mailssl}")
	private String ssl;
	public void onApplicationEvent(ApplicationEvent event) {
		System.out.println("email cfg....");
		System.out.println("print:"+this.toString());
		//创建一个发送者对象
		JavaMailSenderImpl mailSender = new JavaMailSenderImpl();
		mailSender.setHost(this.host);
		mailSender.setPort(this.port);
		mailSender.setUsername(this.username);
		mailSender.setPassword(this.password);
		// 加认证机制
		Properties pop = new Properties();
		pop.put("mail.smtp.host", this.host);
//		pop.put("mail.smtp.port", this.port);//已经在上面加过
		pop.put("mail.smtp.auth", this.auth);//必须是字符串而不能是boolean否则报错
		pop.put("mail.smtp.starttls.enable", this.enable);
		pop.put("mail.smtp.timeout", this.timeout);
		pop.put("mail.smtp.socketFactory.class", this.ssl);
		mailSender.setJavaMailProperties(pop);

		//组织邮件参数并执行发送
		SimpleMailMessage message = new SimpleMailMessage();
		message.setFrom(this.from);
		message.setTo(this.to);
		message.setSubject("主题:测试,spring boot发送邮件.");
		message.setText("测 试\n 邮件为程序发送,是否收到?请回答");
		mailSender.send(message);
		System.out.println("send end....");
    }
    @Override
    public String toString() {
	    return "EmailConfiguration [host=" + host + ", port=" + port + ", username=" + username
	            + ", password=" + password + ", from=" + from + ", to=" + to + ", auth=" + auth
	            + ", enable=" + enable + ", required=" + required + ", timeout=" + timeout + "]";
    }

 

  

© 著作权归作者所有

大大的微笑
粉丝 22
博文 78
码字总数 51858
作品 0
浦东
程序员
私信 提问
Java 发送邮件实现(JavaMail 和 Spring 实现)

Java 实现邮件的发送,使用 JavaMail 和 Spring 实现 一、使用 JavaMail JavaMail 是 Java 处理电子邮件相关的编程接口,但是没有被加在标准的Java开发工具包中(Java Development Kit),所...

非摩尔根
01/17
0
0
Java 发送qq邮件基础和封装

前文摘自 菜鸟教程 :http://www.runoob.com/java/java-sending-email.html 使用Java应用程序发送 E-mail 十分简单,但是首先你应该在你的机器上安装 JavaMail API 和Java Activation Frame...

fantj666
2018/03/18
0
0
java基础实现邮件发送(以qq和网易为例)

java基础实现邮件发送(以qq和网易为例) 当你浏览一些网站的时候,更多的时候都是需要我们登陆、注册的;而注册激活账号一般有两种形式,一是电话验证码激活,二是邮箱激活;第一种是人名币...

NYDarren
2018/05/14
0
0
qq企业邮箱是不是不提供POP3/SMTP/IMAP功能了

我网站用的qq企业邮箱的 POP3/SMTP 服务发邮件,有几个月没检查了,今天发现发不出去邮件, 在我的qq企业邮箱里也找不到 POP3/SMTP/IMAP功能的设置了。 用的java spring 发送的邮件,以前能正...

小猫王
2013/11/17
564
1
Spring Cloud 2.x系列之springboot发送邮件

虽然现在短信验证已经最流行也是最常用的验证方式;但是邮件验证还是必不可少,依然是网站的必备功能之一。什么注册验证,忘记密码或者是给用户发送营销信息都是可以使用邮件发送功能的。最早...

技术小能手
2018/10/22
0
0

没有更多内容

加载失败,请刷新页面

加载更多

分布式架构 实现分布式锁的常见方式

一、我们为什么需要分布式锁? 在单机时代,虽然不需要分布式锁,但也面临过类似的问题,只不过在单机的情况下,如果有多个线程要同时访问某个共享资源的时候,我们可以采用线程间加锁的机制...

太猪-YJ
40分钟前
3
0
GitLab Docker 安装记录

安装环境 环境Centos7.4 64 1.拉取镜像文件 docker pull gitlab/gitlab-ce:latest 2.docker 安装 git.zddts.com 为访问域名或换成可以访问的IP docker run -d --hostname git.***.com -p ......

侠者圣
今天
0
0
部署kubernates dashboard

参考官方文档: https://github.com/kubernetes/dashboard 直接部署官方默认的dashboard: kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v1.10.1/src/deploy/r......

猫海豚
今天
0
0
Docker中Redis的安装

一、下载镜像 docker pull redis 二、创建外挂目录及配置 mkdir /opt/docker/redismkdir /opt/docker/redis/confmkdir /opt/docker/redis/data 三、安装 docker run -d --name compose_r......

闊苡訆涐囍醣
今天
0
0
JNI内存泄露处理方法汇总

在c++中new的对象,如果不返回java,必须用release掉,否则内存泄露。包括NewStringUTF,NewObject。如果返回java不必release,java会自己回收。   jstring jstr = env->NewStringUTF((*p)....

shzwork
今天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部