您的位置:首页 > 编程语言 > Java开发

Java发送邮件

2015-05-22 10:56 176 查看
用QQ邮箱测试javamail发送邮件的功能,用户名密码设置正确,却总是发不出邮件。

开启下QQ邮箱的smtp服务器设置即可。



进入邮箱后点击顶部的设置按钮





点击二级目录“账户” 拉到中下部 把这两项勾上





4

点击保存

5

如果设置失败请联系管理员帮你

6

QQ邮箱 POP3 和 SMTP 服务器地址设置如下:邮箱POP3服务器(端口110)SMTP服务器(端口25)qq.compop.qq.comsmtp.qq.comSMTP服务器需要身份验证。

如果是设置POP3和SMTP的SSL加密方式,则端口如下:

POP3服务器(端口995)

SMTP服务器(端口465或587)。

import javax.mail.*;

/**

* 邮件测试的主题类

*/

public class TestMail {

public static void main(String[] args){

//邮件信息类

MailSenderInfo mailInfo=new MailSenderInfo();

mailInfo.setMailServerHost("smtp.qq.com");//邮件服务器主题

mailInfo.setMailServerPort("25");//服务器端口号

mailInfo.setUserName("761127457");//发送者的用户名

mailInfo.setPassword("wen@yun0401");//发送者的密码

mailInfo.setFromAddress("761127457@qq.com");//发送者地址

mailInfo.setToAddress("1539302798@qq.com");//接收者地址

mailInfo.setSubject("小文——自学Java");//邮件主体

String content="<a href='http://www.baidu.com' >";

mailInfo.setContent(content);//邮件内容

SimleMailSender sms=new SimleMailSender();

boolean flag=sms.sendHtmlMail(mailInfo);

if(flag){

System.out.println("成功");

}else{

System.out.println("失败");

}

}

}

import java.util.Date;

import java.util.Properties;

import javax.activation.CommandMap;

import javax.activation.MailcapCommandMap;

import javax.mail.Address;

import javax.mail.BodyPart;

import javax.mail.Message;

import javax.mail.Multipart;

import javax.mail.Session;

import javax.mail.Transport;

import javax.mail.internet.InternetAddress;

import javax.mail.internet.MimeBodyPart;

import javax.mail.internet.MimeMessage;

import javax.mail.internet.MimeMultipart;

/**

* 邮件发送的核心类

* @author Administrator

* @version 1.0

* 2015-03-25

*/

public class SimleMailSender {

/**

* 邮件发送的核心方法

* @param mailInfo 邮件信息

* @return 结果

*/

public boolean sendHtmlMail(MailSenderInfo mailInfo)

{

//校验身份

MyAuthenticator authenticator=new MyAuthenticator(

mailInfo.getUserName(),mailInfo.getPassword());

Properties properties=mailInfo.getProperties();//装的是主机服务器的地址,端口号

//根据邮件会话的属性和密码验证器构造一个发送邮件的session

Session sendMailSession=Session.getDefaultInstance(properties,authenticator);

//定义发送邮件的主体

try {

//根据session创建一个邮件消息

Message mailMessage=new MimeMessage(sendMailSession);

//创建发送者地址

Address from=new InternetAddress(mailInfo.getFromAddress());

//设置邮件消息的发送者

mailMessage.setFrom(from);

//接收者地址

Address to=new InternetAddress(mailInfo.getToAddress());

//邮件主题

mailMessage.setRecipient(Message.RecipientType.TO, to);

//邮件发送时间

mailMessage.setSentDate(new Date());

//邮件内容

//创建一个容器

Multipart mainPart=new MimeMultipart();

//创建一个包含thml内容的MimeBodyPart

BodyPart html=new MimeBodyPart();

//设置html邮件内容

html.setContent(mailInfo.getContent(),"text/html;charset=utf-8");

mainPart.addBodyPart(html);//将html内容设置到容器里

mailMessage.setContent(mainPart);

//设置发送html格式的邮件头信息

MailcapCommandMap mc=(MailcapCommandMap)CommandMap.getDefaultCommandMap();

mc.addMailcap("text/html;; x-java-content-handler=com.sun.mail.handlers.text_html");

mc.addMailcap("text/xml;; x-java-content-handler=com.sun.mail.handlers.text_xml");

mc.addMailcap("text/plain;;x-java-content-handler=com.sun.mail.handlers.text_plain");

mc.addMailcap("multipart/*;;x-java-content-handler=com.sun.mail.handlers.multipart_mixed");

mc.addMailcap("message/rfc822;;x-java-content-handler=com.sun.mail.handlers.message_rfc822");

CommandMap.setDefaultCommandMap(mc);

Transport.send(mailMessage);//发送

return true;

} catch (Exception e) {

e.printStackTrace();

}

return false;

}

}

import java.util.Properties;

/**

* 邮件发送信息类

* @author Tang James

* @version 1.0

* 2015-03-25

*/

public class MailSenderInfo {

//发送邮件的服务器验证所需要的信息

private String mailServerHost;//服务器的IP地址

private String mailServerPort;//端口号

//邮件的发送地址

private String fromAddress;

//发送者(用户名)

private String userName;

//发送者密码

private String password;

//邮件的接收者

private String toAddress;

//邮件主题

private String subject;

//邮件内容

private String content;

/*

* 获得邮件会话属性

* @return

*/

public Properties getProperties(){

Properties properties=new Properties();

properties.put("mail.smtp.host", this.mailServerHost);//主机地址

properties.put("mail.smtp.port", this.mailServerPort);//端口号

properties.put("mail.smtp.auth", "true");//设置发送授权认证

return properties;

}

public String getMailServerHost() {

return mailServerHost;

}

public void setMailServerHost(String mailServerHost) {

this.mailServerHost = mailServerHost;

}

public String getMailServerPort() {

return mailServerPort;

}

public void setMailServerPort(String mailServerPort) {

this.mailServerPort = mailServerPort;

}

public String getFromAddress() {

return fromAddress;

}

public void setFromAddress(String fromAddress) {

this.fromAddress = fromAddress;

}

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 getToAddress() {

return toAddress;

}

public void setToAddress(String toAddress) {

this.toAddress = toAddress;

}

public String getSubject() {

return subject;

}

public void setSubject(String subject) {

this.subject = subject;

}

public String getContent() {

return content;

}

public void setContent(String content) {

this.content = content;

}

}

import javax.mail.PasswordAuthentication;

import javax.mail.Authenticator;

public class MyAuthenticator extends Authenticator

{

String userName=null;//用户名

String passWord=null;//密码

public MyAuthenticator(String username,String password)

{

this.userName=username;

this.passWord=password;

}

public PasswordAuthentication getPasswordAuthentication()

{

return new PasswordAuthentication(userName,passWord);

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: