① java如何使用ssl连接qq邮箱
Gmail目前已经启用了POP3和SMTP服务,与其他邮箱不同的是Gmail提供的POP3和SMTP是使用安全套接字层SSL的,因此常规的JavaMail程序是无法收发邮件的,下面是使用JavaMail如何收取Gmail邮件以及发送邮件的代码:
1.[代码]GmailFetch.java跳至[1][2][全屏预览]
01packagelius.javamail.ssl;
02
03importjava.io.UnsupportedEncodingException;
04importjava.security.*;
05importjava.util.Properties;
06importjavax.mail.*;
07importjavax.mail.internet.InternetAddress;
08importjavax.mail.internet.MimeUtility;
09
10/**
11*用于收取Gmail邮件
12*@authorWinterLau
13*/
14publicclassGmailFetch{
15
16publicstaticvoidmain(Stringargv[])throwsException{
17
18Security.addProvider(newcom.sun.net.ssl.internal.ssl.Provider());
19finalStringSSL_FACTORY="javax.net.ssl.SSLSocketFactory";
20
21//GetaPropertiesobject
22Propertiesprops=System.getProperties();
23props.setProperty("mail.pop3.socketFactory.class",SSL_FACTORY);
24props.setProperty("mail.pop3.socketFactory.fallback","false");
25props.setProperty("mail.pop3.port","995");
26props.setProperty("mail.pop3.socketFactory.port","995");
27
28//以下步骤跟一般的JavaMail操作相同
29Sessionsession=Session.getDefaultInstance(props,null);
30
31//请将红色部分对应替换成你的邮箱帐号和密码
32URLNameurln=newURLName("pop3","pop.gmail.com",995,null,
33"[邮箱帐号]","[邮箱密码]");
34Storestore=session.getStore(urln);
35Folderinbox=null;
36try{
37store.connect();
38inbox=store.getFolder("INBOX");
39inbox.open(Folder.READ_ONLY);
40FetchProfileprofile=newFetchProfile();
41profile.add(FetchProfile.Item.ENVELOPE);
42Message[]messages=inbox.getMessages();
43inbox.fetch(messages,profile);
44System.out.println("收件箱的邮件数:"+messages.length);
45for(inti=0;i<messages.length;i++){
46//邮件发送者
47Stringfrom=decodeText(messages[i].getFrom()[0].toString());
48InternetAddressia=newInternetAddress(from);
49System.out.println("FROM:"+ia.getPersonal()+'('+ia.getAddress()+')');
50//邮件标题
51System.out.println("TITLE:"+messages[i].getSubject());
52//邮件大小
53System.out.println("SIZE:"+messages[i].getSize());
54//邮件发送时间
55System.out.println("DATE:"+messages[i].getSentDate());
56}
57}finally{
58try{
59inbox.close(false);
60}catch(Exceptione){}
61try{
62store.close();
63}catch(Exceptione){}
64}
65}
66
(Stringtext)
{
69if(text==null)
70returnnull;
71if(text.startsWith("=?GB")||text.startsWith("=?gb"))
72text=MimeUtility.decodeText(text);
73else
74text=newString(text.getBytes("ISO8859_1"));
75returntext;
76}
77
78}
2.[代码]GmailSender.java
01packagelius.javamail.ssl;
02
03importjava.security.Security;
04importjava.util.Date;
05importjava.util.Properties;
06
07importjavax.mail.Authenticator;
08importjavax.mail.Message;
09importjavax.mail.MessagingException;
10importjavax.mail.PasswordAuthentication;
11importjavax.mail.Session;
12importjavax.mail.Transport;
13importjavax.mail.internet.AddressException;
14importjavax.mail.internet.InternetAddress;
15importjavax.mail.internet.MimeMessage;
16
17/**
18*使用Gmail发送邮件
19*@authorWinterLau
20*/
21publicclassGmailSender{
22
23publicstaticvoidmain(String[]args)throwsAddressException,MessagingException{
24Security.addProvider(newcom.sun.net.ssl.internal.ssl.Provider());
25finalStringSSL_FACTORY="javax.net.ssl.SSLSocketFactory";
26//GetaPropertiesobject
27Propertiesprops=System.getProperties();
28props.setProperty("mail.smtp.host","smtp.gmail.com");
29props.setProperty("mail.smtp.socketFactory.class",SSL_FACTORY);
30props.setProperty("mail.smtp.socketFactory.fallback","false");
31props.setProperty("mail.smtp.port","465");
32props.setProperty("mail.smtp.socketFactory.port","465");
33props.put("mail.smtp.auth","true");
34finalStringusername="[邮箱帐号]";
35finalStringpassword="[邮箱密码]";
36Sessionsession=Session.getDefaultInstance(props,newAuthenticator(){
(){
(username,password);
39}});
40
41//--Createanewmessage--
42Messagemsg=newMimeMessage(session);
43
44//--SettheFROMandTOfields--
45msg.setFrom(newInternetAddress(username+"@mo168.com"));
46msg.setRecipients(Message.RecipientType.TO,
47InternetAddress.parse("[收件人地址]",false));
48msg.setSubject("Hello");
49msg.setText("Howareyou");
50msg.setSentDate(newDate());
51Transport.send(msg);
52
53System.out.println("Messagesent.");
54}
55}
② JAVA发送邮件验证异常
我把我写的给你看看吧
import java.util.*;
import javax.mail.internet.*;
import javax.mail.*;
/**
*
* <p>Copyright: Copyright (c) 2007</p>
*
* <p>Company: xjtu </p>
*
* @author cy
* @version 1.0
*/
public class Mail {
/*
* 参数 to 接收者邮箱地址
* title 主题
* content 内容
*/
public static boolean sendMail(String to,String title,String content){
try{
//接收邮件信息
String to_mail=to;
String to_title=title;
String to_content=content;
//建立邮件会话
Properties props=new Properties();//也可用Properties props = System.getProperties();
props.put("mail.smtp.host","163.com ");//存储发送邮件服务器的信息
props.put("mail.smtp.auth","true");//同时通过验证
Session s=Session.getInstance(props);//根据属性新建一个邮件会话
s.setDebug(true);
//由邮件会话新建一个消息对象
MimeMessage message=new MimeMessage(s);//由邮件会话新建一个消息对象
//设置邮件
InternetAddress from=new InternetAddress("[email protected] ");
message.setFrom(from);//设置发件人
InternetAddress toWhere=new InternetAddress(to_mail);
message.setRecipient(Message.RecipientType.TO,toWhere);//设置收件人,并设置其接收类型为TO
message.setSubject(to_title);//设置主题
message.setText(to_content);//设置信件内容
message.setSentDate(new Date());//设置发信时间
//发送邮件
message.saveChanges();//存储邮件信息
Transport transport=s.getTransport("smtp");
//以smtp方式登录邮箱,第一个参数是发送邮件用的邮件服务器SMTP地址,第二个参数为用户名,第三个参数为密码
transport.connect("163.com","[email protected] ","87w92ab@");
transport.sendMessage(message,message.getAllRecipients());//发送邮件,其中第二个参数是所有已设好的收件人地址
transport.close();
return true;
}catch(MessagingException e){
System.err.println("发送失败!");
return false;
}
}
public static void main(String[] args) {
for(int i=1;i<=1000;i++){
boolean isSuccess = Mail.sendMail("这里输入待发送的邮件地址", "这是主题", "这是内容");
if(isSuccess)System.err.println("已发送了"+i+"封邮件!");
else break;
}
System.out.println("发送完成!");
}
}
③ java邮箱发送报错
package com.gpt.util.email;
import java.io.FileOutputStream;
import java.util.List;
import java.util.Properties;
import javax.activation.DataHandler;
import javax.activation.FileDataSource;
import javax.mail.Message;
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;
import com.gpt.util.PropertiesUtil;
/**
*
* Java邮件发送类,使用javaMail类进行邮件发送
* by CKQ
* */
public class MailUtil {
//邮件服务器
private static String mail_host=(String)PropertiesUtil.getMap().get("mail_host");//"smtp.yeah.net";
//邮件服务器端口
private static int port=Integer.valueOf((String)PropertiesUtil.getMap().get("mail_port"));//25;
//邮件协议
private static String mail_transport_protocol=(String)PropertiesUtil.getMap().get("mail_transport_protocol");//"smtp";
//需要smtp验证
private static String mail_smtp_auth=(String)PropertiesUtil.getMap().get("mail_smtp_auth");//"true";
//发送人用户名
private static String username=(String)PropertiesUtil.getMap().get("mail_username");//"[email protected]";
//发送人密码
private static String password=(String)PropertiesUtil.getMap().get("mail_password");//"xxxxxx";
//发送纯文本邮件
public static boolean sendSimpleMail(String from,String to,String subject,String content) {
boolean result=true;
try {
Properties prop=new Properties();
prop.setProperty("mail.host", mail_host);
prop.setProperty("mail.transport.protocol", mail_transport_protocol);
prop.setProperty("mail.smtp.auth", mail_smtp_auth);
//经验证qq邮箱需要添加一下两条记录,否则失败,其他暂时不知道,这是安全协议所需要的类 add by CKQ 2017-7-19
prop.setProperty("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
prop.setProperty("mail.smtp.socketFactory.port", String.valueOf(port));
Session session=Session.getInstance(prop);
//设置为debug模式 ,生产环境应该关掉
session.setDebug(true);
//获得transport对象
Transport ts=session.getTransport();
//连上邮件服务器
ts.connect(mail_host,port, username,password);
//创建邮件
MimeMessage message=new MimeMessage(session);
//设置发送人
message.setFrom(new InternetAddress(from));
//设置接收人
message.setRecipient(javax.mail.Message.RecipientType.TO, new InternetAddress(to));
//设置主题
message.setSubject(subject);
//设置内容
message.setContent(content,"text/html;charset=UTF-8");
//发送邮件
ts.sendMessage(message, message.getAllRecipients());
//关闭连接
ts.close();
} catch (Exception e) {
e.printStackTrace();
result=false;
}
return result;
}
//发送带图片的邮件
public static boolean sendImageMail(String from,String to,String subject,String absoluteImagePath) throws Exception{
boolean result=true;
try {
//获取图片后缀
String suffix=absoluteImagePath.substring(absoluteImagePath.lastIndexOf(".")+1,absoluteImagePath.length()) ;
//定义contentId,图片到达邮件服务器后会有一个contentId,然后html中可以引用这个contentId显示该图片。
String contentId="1."+suffix;
//内容模板
String content="带图片的邮件<img src='cid:"+contentId+"'/>";
Properties prop=new Properties();
prop.setProperty("mail.host", mail_host);
prop.setProperty("mail.transport.protocol", mail_transport_protocol);
prop.setProperty("mail.smtp.auth", mail_smtp_auth);
Session session=Session.getInstance(prop);
//设置为debug模式 ,生产环境应该关掉
session.setDebug(true);
//获得transport对象
Transport ts=session.getTransport();
//连上邮件服务器
ts.connect(mail_host,port, username,password);
//创建邮件
MimeMessage message=new MimeMessage(session);
//设置发送人
message.setFrom(new InternetAddress(from));
//设置接收人
message.setRecipient(javax.mail.Message.RecipientType.TO, new InternetAddress(to));
//设置标题
message.setSubject(subject);
//创建正文
MimeBodyPart text=new MimeBodyPart();
//设置内容
text.setContent(content,"text/html;charset=UTF8");
//创建一个图片
MimeBodyPart image=new MimeBodyPart();
//从本地absoluteImagePath文件读取
DataHandler dh=new DataHandler(new FileDataSource(absoluteImagePath));
image.setDataHandler(dh);
//设置图片的contentId
image.setContentID(contentId);
//创建容器描述数据关系
javax.mail.internet.MimeMultipart mm=new MimeMultipart();
//容器添加内容
mm.addBodyPart(text);
//容器添加图片
mm.addBodyPart(image);
mm.setSubType("related");
message.setContent(mm);
message.saveChanges();
//存储创建的邮件
message.writeTo(new FileOutputStream("F:/imagemail.eml"));
ts.sendMessage(message, message.getAllRecipients());
ts.close();
} catch (Exception e) {
e.printStackTrace();
result=false;
}
return result;
}
//发送带附件的邮件
public static boolean sendAttachMail(String from,String to,String subject,String content,List<String> absoluteFilePathList) throws Exception{
boolean result=true;
try {
Properties prop=new Properties();
prop.setProperty("mail.host", mail_host);
prop.setProperty("mail.transport.protocol", mail_transport_protocol);
prop.setProperty("mail.smtp.auth", mail_smtp_auth);
Session session=Session.getInstance(prop);
//设置为debug模式 ,生产环境应该关掉
//session.setDebug(true);
//获得transport对象
Transport ts=session.getTransport();
//连接邮件服务器
ts.connect(mail_host,port, username,password);
//创建邮件
MimeMessage message=new MimeMessage(session);
//设置发送人
message.setFrom(new InternetAddress(from));
//设置接收人
message.setRecipient(Message.RecipientType.TO, new InternetAddress(to));
//设置主题
message.setSubject(subject);
//创建正文
MimeBodyPart text=new MimeBodyPart();
//设置正文内容
text.setContent(content,"text/html;charset=UTF-8");
//创建容器描述关系
MimeMultipart mp=new MimeMultipart();
//添加正文
mp.addBodyPart(text);
for(int i=0;i<absoluteFilePathList.size();i++){
//创建附件
MimeBodyPart attach=new MimeBodyPart();
DataHandler dh=new DataHandler(new FileDataSource(absoluteFilePathList.get(i)));
attach.setDataHandler(dh);
attach.setFileName(dh.getName());
//容器添加附件
mp.addBodyPart(attach);
}
mp.setSubType("mixed");
message.setContent(mp);
message.saveChanges();
//保存邮件至F盘
message.writeTo(new FileOutputStream("F:/attachMail.eml"));
ts.sendMessage(message, message.getAllRecipients());
ts.close();
} catch (Exception e) {
e.printStackTrace();
result=false;
}
return result;
}
}
④ java使用main函数进行邮件发送怎样设置邮件格式
1、首先电脑可以连网;
代码:
//获取Email
StringguwenEmail="你的发送Email";
//将Email取出@和.之间的后缀,作为发送类型,比如[email protected]→qq
Stringguwen=guwenEmail.substring(guwenEmail.indexOf("@")+1,guwenEmail.indexOf("."));
//获取密码
StringguwenPwd="密码";
//获取Email
Stringtouremail="目标Email";
//创建发送邮件对象email
SimpleEmailemail=newSimpleEmail();
//设置发送类型
email.setHostName("smtp."+guwen+".com");
//设置email,密码
email.setAuthentication(guwenEmail,guwenPwd);
//设置字符编码
email.setCharset("UTF-8");
try{
email.setSSL(true);
//设置接收邮箱
email.addTo(touremail);
//设置发送邮箱
email.setFrom(guwenEmail);
//设置邮件标题
email.setSubject("路书");
//设置邮件内容
email.setMsg("呵呵");
//设置发送
email.send();
}catch(Exceptione){
e.printStackTrace();
returnINPUT;
}
⑤ JAVA发送邮件提示530怎么办
530是安全验证没通过
俩可能
1、你邮箱是开了ssl的,你javamail代码里没写这段
MailSSLSocketFactorysf=newMailSSLSocketFactory();
sf.setTrustAllHosts(true);
props.put("mail.smtp.ssl.enable","true");
props.put("mail.smtp.ssl.socketFactory",sf);
2、你的邮箱限制了pop和smtp,这就没辙了。不过一般邮箱里会提供开启pop的选项
⑥ 【Java】有java收取邮件,但是对方的邮件服务器,端口995有ssl加密,有做过这方面的大神啊
http://blog.csdn.net/chenshanhao2008/article/details/5695072
这里面有SSL方式收取邮件的例子,你试试,
⑦ 用java来发送带附件的邮件
用java来发送带附件的邮件要翻译的。
⑧ java通过https发送邮件。本地发送邮件没有问题,但是上传到服务器上就不能发送了
你好:服务器的话,一个可能原因就是对配置文件的路径读取有问题,你可以可打印下路径,看看配置文件是否可以找到;再就是服务器的话,可以看下发送邮件的端口是否可用。
⑨ javamail的tls和ssl方式是什么意思
tls/ssl协议是安全通讯协议。这种协议目前各种大型邮件传输服务商都支持,有的邮箱可以设置没有这个协议不能发送邮件。其实不用太关注这个通讯协议,在使用javamail中使用tls/ssl也很简单:就是加一个配置而已,其他内容已经封装好了。
附:SSL/TLS 单向认证
用户到服务器之间存在单方面的认证,即客户端会认证服务器端身份,而服务器端不会去对客户端身份进行验证。首先,客户端发起握手请求,服务器收到握手请求后,会选择适合双方的协议版本和加密方式。然后,再将协商的结果和服务器端的公钥一起发送给客户端。客户端利用服务器端的公钥,对要发送的数据进行加密,并发送给服务器端。服务器端收到后,会用本地私钥对收到的客户端加密数据进行解密。然后,通讯双方都会使用这些数据来产生双方之间通讯的加密密钥。接下来,双方就可以开始安全通讯过程了。
⑩ 如何使用Java发送qq邮件
方法:
1.前提准备工作:
首先,邮件的发送方要开启POP3 和SMTP服务--即发送qq邮件的账号要开启POP3 和SMTP服务
2.开启方法:
登陆qq邮箱
3.点击 设置
4.点击—-账户
5.找到:POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务 —点击开启
6.送短信 —–点击确定
7.稍等一会,很得到一个授权码! –注意:这个一定要记住,一会用到
8.点击保存修改 —OK 完成
9.java 测试代码:
package cn.cupcat.test;
import java.util.Properties;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.AddressException;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMessage.RecipientType;
public class SendmailUtil {
public static void main(String[] args) throws AddressException, MessagingException {
Properties properties = new Properties();
properties.put("mail.transport.protocol", "smtp");// 连接协议
properties.put("mail.smtp.host", "smtp.qq.com");// 主机名
properties.put("mail.smtp.port", 465);// 端口号
properties.put("mail.smtp.auth", "true");
properties.put("mail.smtp.ssl.enable", "true");//设置是否使用ssl安全连接 ---一般都使用
properties.put("mail.debug", "true");//设置是否显示debug信息 true 会在控制台显示相关信息
//得到回话对象
Session session = Session.getInstance(properties);
// 获取邮件对象
Message message = new MimeMessage(session);
//设置发件人邮箱地址
message.setFrom(new InternetAddress("[email protected]"));
//设置收件人地址 message.setRecipients( RecipientType.TO, new InternetAddress[] { new InternetAddress("[email protected]") });
//设置邮件标题
message.setSubject("这是第一封Java邮件");
//设置邮件内容
message.setText("内容为: 这是第一封java发送来的邮件。");
//得到邮差对象
Transport transport = session.getTransport();
//连接自己的邮箱账户
transport.connect("[email protected]", "vvctybgbvvophjcj");//密码为刚才得到的授权码
//发送邮件 transport.sendMessage(message, message.getAllRecipients());
}
}
10.运行就会发出邮件了。。。。
下面是我收到邮件的截图,当然我把源码中的邮件地址都是修改了,不是真实的,你们测试的时候,可以修改能你们自己的邮箱。最后,祝你也能成功,如果有什么问题,可以一起讨论!
注意事项
得到的授权码一定要保存好,程序中要使用