java发送qq邮箱不成功_Java基于JavaMail实现向QQ邮箱发送邮件遇到的问题

最近使用Java基于JavaMail实现向QQ邮箱发送邮件老是发送失败,在网上搜了下,终于找到原因,记录下。

参考:http://www.jb51.net/article/78405.htm

网上还有种说法,把 smtp.qq.com 换成 smtp.exmail.qq.com也不需要 SSL加密,但是没有run成功。所以还是老老实实加上 SSL 加密吧。

下面是代码:

Mail类:

package com.xjz.mail;

import java.io.Serializable;

public class Mail implements Serializable {

/**

*

*/

private static final long serialVersionUID = 1L;

public static final String ENCODEING = "UTF-8";

private String host; // 服务器地址

private String sender; // 发件人的邮箱

private String receiver; // 收件人的邮箱

private String name; // 发件人昵称

private String username; // 账号

private String password; // 密码

private String subject; // 主题

private String message; // 信息(支持HTML)

public String getHost() {

return host;

}

public void setHost(String host) {

this.host = host;

}

public String getSender() {

return sender;

}

public void setSender(String sender) {

this.sender = sender;

}

public String getReceiver() {

return receiver;

}

public void setReceiver(String receiver) {

this.receiver = receiver;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public String getUsername() {

return username;

}

public void setUsername(String username) {

this.username = username;

}

public String getPassword() {

return password;

}

public void setPassword(String password) {

this.password = password;

}

public String getSubject() {

return subject;

}

public void setSubject(String subject) {

this.subject = subject;

}

public String getMessage() {

return message;

}

public void setMessage(String message) {

this.message = message;

}

}

邮件工具类:

package com.xjz.mail;

import org.apache.commons.mail.EmailException;

import org.apache.commons.mail.HtmlEmail;

import org.slf4j.Logger;

import org.slf4j.impl.Log4jLoggerFactory;

/**

* 邮件发送工具实现类

* @author Administrator

*

*/

public class MailUtil {

protected final Logger logger = new Log4jLoggerFactory().getLogger("loggerSlfj");

public boolean send(Mail mail) {

// 发送email

HtmlEmail email = new HtmlEmail();

try {

email.setSSLOnConnect(true);

// 这里是SMTP发送服务器的名字:163的如下:"smtp.163.com"

email.setHostName(mail.getHost());

// 字符编码集的设置

email.setCharset(Mail.ENCODEING);

// 收件人的邮箱

email.addTo(mail.getReceiver());

// 发送人的邮箱

email.setFrom(mail.getSender(), mail.getName());

// 如果需要认证信息的话,设置认证:用户名-密码。分别为发件人在邮件服务器上的注册名称和密码

email.setAuthentication(mail.getUsername(), mail.getPassword());

// 要发送的邮件主题

email.setSubject(mail.getSubject());

// 要发送的信息,由于使用了HtmlEmail,可以在邮件内容中使用HTML标签

email.setMsg(mail.getMessage());

// 发送

email.send();

if (logger.isDebugEnabled()) {

logger.debug(mail.getSender() + " 发送邮件到 " + mail.getReceiver());

}

return true;

} catch (EmailException e) {

e.printStackTrace();

logger.info(mail.getSender() + " 发送邮件到 " + mail.getReceiver()

+ " 失败");

return false;

}

}

}

测试代码:

package com.xjz.mail;

import org.junit.Test;

public class TestMail {

@Test

public void testMail() {

Mail mail = new Mail();

mail.setHost("smtp.qq.com"); // 设置邮件服务器,如果不用163的,自己找找看相关的

mail.setSender("xxxxxx@qq.com"); // 发送人

mail.setReceiver("xxxxxx@qq.com"); // 接收人

mail.setUsername("xxxxxx@qq.com"); // 登录账号,一般都是和邮箱名一样吧

mail.setPassword("xxxxxx"); // 授权码

mail.setSubject("test");

mail.setMessage("test");

new MailUtil().send(mail);

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值